Невозможно связать идентификатор пользователя с задачей Larvel - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь создать веб-приложение со списком дел, используя 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);
    }
}

Задача.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 Ответ

0 голосов
/ 25 ноября 2018

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

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...