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

How to insert record with many belongsTo relations in Laravel Eloquent

我正在尝试以 Eloquent 方式插入记录。

基本情况下是清楚的。例如,如果我有一个包含 Post 的博客,并且每个 post 属于一个用户,我可以这样做:

$post = new Post;
$post->content = 'Post content';
$user->posts()->save($post);

但是如果我的Post同时属于User、Category和Group,我该怎么办呢?

我的第一个想法是这样做:

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

但是不行,因为我存到数据库的时候group id和category id都是空的,不允许。

我现在做的是:

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

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

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

您使用 associate 的方式不对。您必须在 belongsTo 关系端调用它而不是 hasMany.

试试这个:

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