Я студент, еще новичок в изучении всего этого материала Laravel. Я застрял, пытаясь заставить мои задачи передать user_id в базу данных SQL в методе store. Я попробовал около 1000 разных способов без удачи.
Текущая ошибка: вызов неопределенного метода App \ User :: id (). Я заметил, что другие сообщения, похоже, не имеют приложения 2 \ after в своих ошибках. Не могу понять, почему он это делает.
Я разместил весь код на случай, если кто-нибудь получит от него помощь. Любая помощь будет приветствоваться, и если вам нужно больше от меня, дайте мне знать.
Это myTaskController
<?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();
});
}