Невозможно связать идентификатор пользователя с задачей Larvel

Я пытаюсь создать веб-приложение со списком дел, используя Laravel 5.7. Для аутентификации я использовал php artisan make: auth.

Когда я пытаюсь добавить задачу, она просто выдает ошибку 500.

Кроме того, отображение постов, которые созданы вручную, работает.

web.php

<?php
Route::get('/', 'TaskController@index')->name('index');
Route::post('/tasks', 'TaskController@store');
Route::delete(' /tasks/{task}', 'TaskController@destroy');
Auth::routes();

User.php

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
use Notifiable;

protected $fillable = [
'name', 'email', 'password',
];

protected $hidden = [
'password', 'remember_token',
];

public function tasks()
{
return $this->hasMany(Task::class);
}
}

Task.php (эта модель просто добавляет охрану и прочее ко всем остальным моделям)

<?php

namespace App;

class Task extends Model
{
public function user()
{
return $this->belongsTo(User::class, 'user_id');
}
}

Up функция (задачи)

public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->increments('id');
$table->string('text');
$table->unsignedInteger('user_id');
$table->timestamps();
});
}

Контроллер задач

namespace App\Http\Controllers;
use App\Task;


class TaskController extends Controller
{

public function __construct()
{
$this->middleware('auth');
}

public function index()
{
$tasks = Task::where('user_id', auth()->id())->get();

return view('index', compact('tasks'));
}

public function store()
{
$task = Task::create([
'text' => request()->validate([
'text' => 'required|max:255'
]),

'user_id' => auth()->id()
]);

return response()->json($task->id);
}

public function destroy(Task $task)
{
$task->delete();
}
}

Любые другие предложения приветствуются.

1

Решение

Во-первых, вы должны использовать классы запросов для проверки запросов. Итак, ваш метод магазина будет выглядеть так:

public function store(TaskRequest $taskRequest){}

Во-вторых, добавьте следующее в вашу модель задачи.

protected $fillable = [
'text'
];

public static function boot()
{
static::creating(function($model){
$model['user_id'] = Auth::user()->id;
});
}

В-третьих, ваш метод магазина хотел бы это.

public function store(TaskRequest $taskRequest)
{
$task = new Task($taskRequest->all);
$task->save();

return response()->json($task->id);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]