Laravel 5.2保存属于一对多的关系
嗨,我有这样的Laravel 5.2保存属于一对多的关系,laravel,eloquent,Laravel,Eloquent,嗨,我有这样的用户模型 <?php namespace App\Models; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { /** * The attributes that are mass assignable. * * @var array */ protected $fillabl
用户模型
<?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);
}
<?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控制器中
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))
SQLSTATE[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败(`rentcar`.`posts`,约束`posts\u user\u id\u foreign`外键(`user\u id`)引用`users`(`id`)在更新级联时删除级联)(SQL:insert-into`posts`(`title`、`content`、`updated\u at`、`created\u at`)值(朱杜尔,Isi,2016-10-20 11:10:312016-10-20 11:10:31)
我的存储方法代码有什么问题
如果我想保存post并将其与当前登录用户关联,我的代码应该是什么样子?请确保posts表中的外键可以为空
$table->integer('user_id')->unsigned()->nullable();
确保posts表中的外键可为空
$table->integer('user_id')->unsigned()->nullable();
create
方法立即保存
因此,要么在创建数组中指定用户id,要么使用
$post = new Post();
$post->title = $request->title;
$post->content = $request->content;
$post->user()->associate($user);
$post->save();
create
方法立即保存
因此,要么在创建数组中指定用户id,要么使用
$post = new Post();
$post->title = $request->title;
$post->content = $request->content;
$post->user()->associate($user);
$post->save();
试试这个
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.');
}
试试这个
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.');
}