laravel - WhereHas 关于多态关系
问题描述
我有下表:
table logs
| id | loggable_id | loggable_type | action |
loggable_type 可以是Contract
,User
或者Card
我需要从logs
表中获取所有记录,但我必须whereHas
在每个 loggable_types 上运行,所以像这样:
$logs = Log::whereHas('contract', function() {
})
->whereHas('user', function() {
})
->whereHas('card', function() {
});
但我不确定如何定义这些关系。现在我只有:
public function loggable()
{
return $this->morphTo();
}
如果重要的话,那就是 Laravel 5.6。
解决方案
用这个
Comment::whereHasMorph('loggable', [User::class, Card::class], function ($query) {
$query->where('title', 'foo');
})->get();
推荐阅读
- javascript - 如何在jsp中显示下拉框的值
- android - Genymotion 无法实例化服务 com.google.android.gms.measurement.AppMeasurementService
- angular - angular 5 ngModelOptions updateOn 多桩事件
- python - loc 在数据帧过滤中花费大量时间
- javascript - javascript选择框功能:根据选项值过滤
- java - 单击fab按钮时如何在视频播放器中播放最后播放的视频?
- javascript - Angular 5 异步管道不适用于 FirebaseDatabase
- forms - MS Access 按表格上的记录选择过滤子表
- ruby-on-rails - 安装 json (1.8.0) 时出错,Bundler 无法继续。在捆绑之前确保 `gem install json -v '1.8.0'` 成功
- wordpress - 启用 Keep-alive 代码不会影响我们的网站