我正在尝试使用Laravel 5.7创建待办事项列表Web应用程序。对于auth,我使用了 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');
}
}
向上功能(任务)
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();
}
}
欢迎其他任何建议。
答案 0 :(得分:0)
首先,您应该使用请求类来验证请求。因此,您的存储方法如下:
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);
}