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.');
 }