我试图以雄辩的方式插入记录。
基本情况很清楚。例如,如果我有一个带帖子的博客,并且每个帖子属于一个用户,我可以这样做:
$post = new Post;
$post->content = 'Post content';
$user->posts()->save($post);
但是,如果我的帖子同时属于用户,类别和群组,我应该怎么做呢?
我的第一个想法是这样做:
$post = new Post;
$post->content = 'Post content';
$user->posts()->save($post);
$group->posts()->associate($post);
$cat->posts()->associate($post);
但它不起作用,因为当我将它保存到数据库并且不允许时,组ID和类别ID为空。
我现在正在做的是:
$post = new Post;
$post->content = 'Post content';
$post->group = $group->id;
$post->category = $cat->id;
$user->posts()->save($post);
但我不认为这是正确的方式。
有人能指出我正确的方向吗?
答案 0 :(得分:4)
你正在以错误的方式使用associate
。您必须在belongsTo
关系方而不是hasMany
上调用它。
试试这个:
$post = new Post;
$post->content = 'Post content';
$post->category()->associate($cat);
$post->group()->associate($group);
$user->posts()->save($post);