有没有办法获取模型的集合并仅获取存在关系行的对象?
Is there a way to get Collection of a model and get only objects whose relationship rows exists?
我有三个模型 User、Post 和 Comment
User
-id
Post
-user_id
Comment
-post_id
我的 table 有问题,例如,某些帖子不存在或某些用户行不存在。
我怎样才能只获得存在 post_id 并且还存在 user_id 使用范围(最好是全局范围)的用户的评论?
我建议您首先尝试解决数据库中发生的这种异常情况。
您可以使用可为空的外部 ID 和外键约束来实现它。
如果您使用外键约束,则不会发生模型连接到不存在的模型的情况。您可以将其设置为空,即父数据库中不存在的所有外国 ID。
或者您可以使用此代码:
Comment::whereHas('post', function($q){
$q->has('user');
})->get();
假设您已经在模型中设置了relationships,您可以使用whereHas
方法获取它们:
$commentsWithPostWhichHaveAUser = Comment::whereHas('Post', function($query){
$query->has('User');
});
我有三个模型 User、Post 和 Comment
User
-id
Post
-user_id
Comment
-post_id
我的 table 有问题,例如,某些帖子不存在或某些用户行不存在。
我怎样才能只获得存在 post_id 并且还存在 user_id 使用范围(最好是全局范围)的用户的评论?
我建议您首先尝试解决数据库中发生的这种异常情况。 您可以使用可为空的外部 ID 和外键约束来实现它。
如果您使用外键约束,则不会发生模型连接到不存在的模型的情况。您可以将其设置为空,即父数据库中不存在的所有外国 ID。
或者您可以使用此代码:
Comment::whereHas('post', function($q){
$q->has('user');
})->get();
假设您已经在模型中设置了relationships,您可以使用whereHas
方法获取它们:
$commentsWithPostWhichHaveAUser = Comment::whereHas('Post', function($query){
$query->has('User');
});