【发布时间】:2019-12-12 06:14:42
【问题描述】:
我正在我的小项目中处理这些类之间的多态关系:提交(与帖子相同)、评论和用户。
问题是,我可以依靠提交模型收集所有的 cmets,例如:
$submissions = Submission::with('comments')->get()->find( $submission );
但是,如果我在修补程序中尝试这样的事情:
$users = User::with( 'comments' )->get();
我得到了所有的用户数据,但没有 cmets 出现:
comments: Illuminate\Database\Eloquent\Collection {#3003
all: [],
},
这是模型之间关系的所有代码:
class Comment extends Model
{
protected $fillable = [ 'commentable_id', 'commentable_type', 'text' ];
public function commentable() {
return morphTo();
}
}
现在这被添加到提交和用户模型中:
public function comments() {
return $this->morphMany( Comment::class, 'commentable' );
}
在提交模型中,我使用受保护的 $guarded = [];处理批量分配,我不在用户模型中调用它。
我希望你能告诉我我做错了什么,因为我无法通过评论模型访问用户模型,反之亦然。 提前致谢!
编辑:这是创建评论的代码:
public function store( Submission $submission ) {
$data = request()->validate([
'text' => [ 'required', 'string', 'max:255' ]
]);
$id = $submission->comments()->create([ 'text' => request()->text ]);
dd( $submission, $data );
}
【问题讨论】:
-
对我来说一切都很好。您实际上在
commentable_type是App\User的db 中有任何cmets?您创建评论的代码仅用于提交 cmets。 -
其实这可能是个问题。我有几个创建的 cmets 和 commentable_type 是 Submission::class,而不是 User::class 因为我没有找到添加两者的方法,但在这种情况下我需要它们,你能给我一个提示如何为用户和提交创建评论?在此先感谢:)
标签: laravel eloquent polymorphic-associations