laravel-5 - 在 Laravel 中将表与其模型的默认范围连接起来
问题描述
目前,我们可以加入 2 个表,例如
ModelA::join('table_b', 'table_a.id', '=', 'table_b.a_id');
使用这种方法,table_b 的模型(即:ModelB)的默认范围不会应用于查询。假设 ModelB 现在启用了 SoftDeletes,上面的连接将不包括whereRaw('table_b.deleted_at IS NULL')
. 我知道我可以使用以下代码手动添加它。
ModelA::join('table_b', function($join) {
$join->on('table_a.id', '=', 'table_b.a_id')
->whereRaw('table_b.deleted_at IS NULL');
});
我想知道是否有任何方法可以加入,以便在 ModeB 中自动应用默认范围。就像是:
ModelA::joinModel(ModelB::Class, 'table_a.id', '=', 'table_b.a_id');
解决方案
过滤掉相关Model上的记录,Eloquent方式——
ModelA::with('modelb')->whereHas('modelb', function($query){
$query->filterThis()->filterThat();
})->get();
推荐阅读
- c# - Quartz.net 3.0.6 和 system.data.sqlite 1.0.109,没有提供者“SQLite-10”的元数据信息
- java - 合并排序返回由第一个条目的多个重复项组成的 ArrayList,而不是排序的 ArrayList
- java - 在列表中查找增量之前的最小值(并更新它)
- micronaut - Micronaut 控制器中的默认处理程序
- java - 如何在 Java 中合并两个对象?
- c++ - 在 C++ 中创建一个多位数字
- c++ - 澄清在这种情况下使用与号(&)
- spring-boot - 如何在属性文件之间传递值
- xcode - 如何删除在命令行上删除 .git 后剩余的 Xcode 源代码控制?
- mobile-robot-toolkit - How to use gyro data with RBPF SLAM?