如何在Laravel Eloquent中插入具有许多belongsTo关系的记录

时间:2015-01-04 12:14:51

标签: php laravel orm eloquent

我试图以雄辩的方式插入记录。

基本情况很清楚。例如,如果我有一个带帖子的博客,并且每个帖子属于一个用户,我可以这样做:

$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);

但我不认为这是正确的方式。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:4)

你正在以错误的方式使用associate。您必须在belongsTo关系方而不是hasMany上调用它。

试试这个:

$post = new Post;
$post->content = 'Post content';
$post->category()->associate($cat);
$post->group()->associate($group);
$user->posts()->save($post);