嗨,我有User Model
喜欢这个
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'role_id',
'email',
'password',
'full_name',
'address',
'phone',
'family_name',
'family_address',
'family_phone',
'idcard',
'status',
'balance',
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function posts(){
return $this->hasMany(Post::class);
}
我有Post Model
喜欢这个
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = [
'user_id',
'title',
'content',
];
public function user(){
return $this->belongsTo(User::class);
}
}
并在我的Posts Controller
public function store(CreatePostRequest $request)
{
$user = Auth::user();
$post = Post::create([
'title' => $request->title,
'content' => $request->content,
]);
$post->user()->associate($user);
return redirect()->route('admin.posts.index')->with('success', 'Post berhasil disimpan.');
}
我收到此错误
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`rentcar`.`posts`, CONSTRAINT `posts_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) (SQL: insert into `posts` (`title`, `content`, `updated_at`, `created_at`) values (Judul, <p>Isi</p>, 2016-10-20 11:10:31, 2016-10-20 11:10:31))
我的商店方法代码有什么问题?
如果我想保存帖子并将其与当前登录的用户关联,我的代码应如何显示?
答案 0 :(得分:0)
确保posts表中的外键可以为空。
$table->integer('user_id')->unsigned()->nullable();
答案 1 :(得分:0)
create
方法会立即保存。
因此要么在create数组中指定user_id,要么使用
$post = new Post();
$post->title = $request->title;
$post->content = $request->content;
$post->user()->associate($user);
$post->save();
答案 2 :(得分:0)
试试这个。
public function store(CreatePostRequest $request)
{
$user = Auth::user();
$post = Post::create([
'title' => $request->title,
'content' => $request->content,
'user_id' => $user->id;
]);
return redirect()->route('admin.posts.index')->with('success', 'Post berhasil disimpan.');
}