Laravel-我需要帮助将 user_id 传递给 SQL 数据库中的 tasks_table 错误:调用未定义的方法 App\\User::id()
Posted
技术标签:
【中文标题】Laravel-我需要帮助将 user_id 传递给 SQL 数据库中的 tasks_table 错误:调用未定义的方法 App\\\\User::id()【英文标题】:Laravel- I need help passing user_id to tasks_table in SQL database Error: Call to undefined method App\\User::id()Laravel-我需要帮助将 user_id 传递给 SQL 数据库中的 tasks_table 错误:调用未定义的方法 App\\User::id() 【发布时间】:2019-04-04 04:16:41 【问题描述】:我是一个学生,对所有这些 Laravel 东西还是个新手。我一直试图让我的任务在 store 方法中将 user_id 传递给我的 SQL 数据库。我已经尝试了大约 1000 种不同的方法,但都没有运气。
当前错误:调用未定义的方法 App\User::id()。我注意到其他帖子的错误中似乎没有 2 \ after App 。看不出它为什么这样做。
我已经发布了所有代码,以防有人从中获得任何帮助。任何帮助将不胜感激,如果您需要我提供更多帮助,请告诉我。
这是我的任务控制器
<?php
namespace App\Http\Controllers;
use App\Task;
use Illuminate\Http\Request;
use Auth;
use App\User;
class TaskController extends Controller
public function __construct()
$this->middleware('auth');
/**
* Display a listing of the resource.
*
* @return \Illuminate\Database\Eloquent\Collection|static[]
*/
public function index()
return response(Task::latest()->get(), 200);
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
$data = $request->validate([
'text' => 'required',
'finished' => 'required|boolean',
]);
$user = Auth::user()->id();
$task = Task::create($data, $user);
return response($task, 201);
/**
* Display the specified resource.
*
* @param \App\Task $task
* @return \Illuminate\Http\Response
*/
public function show(Task $task)
return response($task, 200);
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Task $task
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Task $task)
$data = $request->validate([
'text' => 'required',
'finished' => 'required|boolean',
]);
$task->update($data);
return response($task, 200);
/**
* Remove the specified resource from storage.
*
* @param \App\Task $task
* @return \Illuminate\Http\Response
* @throws \Exception
*/
public function destroy(Task $task)
$task->delete();
return response('Deleted Succesfully', 200);
这是我的任务模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
protected $fillable = [
'text',
'finished',
'user_id'
];
protected $casts = [
'finished' => 'boolean',
];
public function tasks()
return $this->hasMany(Task::class);
public function user()
return $this->belongsTo(User::class);
这是我的用户模型
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Task;
class User extends Authenticatable
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function tasks()
return $this->hasMany(Task::class);
任务表架构
public function up()
Schema::create('tasks', function (Blueprint $table)
$table->increments('id');
$table->integer('user_id');
$table->longText('text');
$table->boolean('finished')->default(false);
$table->timestamps();
);
用户表架构
Schema::create('users', function (Blueprint $table)
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
);
【问题讨论】:
也可以发布数据库表模式吗? 【参考方案1】:只是稍微改变了你的代码:
任务模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
protected $fillable = [
'text',
'finished',
'user_id'
];
protected $casts = [
'finished' => 'boolean',
];
public function user()
return $this->belongsTo(User::class);
任务控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Task;
use Auth;
use DB;
class TaskController extends Controller
public function __construct()
$this->middleware('auth');
/**
* Display a listing of the resource.
*
* @return \Illuminate\Database\Eloquent\Collection|static[]
*/
public function index()
return response(Task::latest()->get(), 200);
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
$request->validate([
'text' => 'required',
'finished' => 'required|boolean'
]);
$task = Task::create([
'text' => $request->text,
'finished' => $request->finished,
'user_id' => Auth::user()->id
]);
return response($task, 201);
/**
* Display the specified resource.
*
* @param \App\Task $task
* @return \Illuminate\Http\Response
*/
public function show(Task $task)
return response($task, 200);
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Task $task
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Task $task)
$request->validate([
'text' => 'required',
'finished' => 'required|boolean',
]);
$task->update([
'text' => $request->text,
'finished' => $request->finished,
]);
return response($task, 200);
/**
* Remove the specified resource from storage.
*
* @param \App\Task $task
* @return \Illuminate\Http\Response
* @throws \Exception
*/
public function destroy(Task $task)
$task->delete();
return response('Deleted Successfully', 200);
【讨论】:
啊,是的,我已经尝试过了,仍然是同样的错误:(我将编辑上面的内容以反映这一点。 你在用户表上的主键是什么? 我相信这就是您要问的? $table->increments('id'); 你是救星!!非常感谢! 我没有注意到您只是根据验证规则返回数据创建数据:P。您所有的表单数据都在 $request 中。不客气:)以上是关于Laravel-我需要帮助将 user_id 传递给 SQL 数据库中的 tasks_table 错误:调用未定义的方法 App\\User::id()的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 的配置文件工厂中提供唯一的 user_id