laravel - 加入本地范围
问题描述
我在我的模型上做一个本地范围。在我的范围内,我加入了表格,但是在我的结果集上,我失去了对我的关系的引用。
在 Entry 模型中,我有这种关系:
public function items() {
return $this->hasMany('App\Models\Accounting\EntryItem', 'entry_id');
}
这个范围:
public function scopeWithConst($query, $const_code) {
return $query->join('consts', function($join) use($const_code) {
$join->on('consts.code', '=', $const_code);
});
}
在控制器中:
$entry = Entry::with('items')->withConst('entries.status')->find($id);
由于调用了“withConst”范围,它总是返回“items”:[]!
有什么解释吗?
解决方案
您必须将“entries.status”替换为您要查找的条目中此特定 $id 的“entries.status”的值。你可以通过闭包或在调用'withConst'之前找到值来做到这一点。
$status = Entry::find($id)->pluck('status');
$entry = Entry::with('items')->withConst($status)->find($id);
或者
$entry = Entry::with('items')->withConst(function() use ($id) {
return Entry::find($id)->pluck('status');
}
)->find($id);
据我所知,范围是可重用的限制,不适用于涉及 2 个表的连接。根据您对示波器的需求量,以没有示波器的传统方式保存它。
推荐阅读
- c - 如何在C中制作链表?
- mysql - 有没有办法选择与数据库中前十组相关的所有行?
- python - 用 beautifulsoup 抓取地图数据
- docker - docker make 实用程序不缓存更改
- swift - 在 SwiftUI ContentView 中从 @propertyWrapper 加载 json
- c - 我没有得到我想要的输出
- sorting - 在按字母顺序排序的电子表格中插入新的 Google 表格行
- php - 如何在 Wordpress 网站上将默认延迟加载属性设置为博客和图库图像
- amazon-web-services - 在 Athena Aws 中连接行值
- binary-tree - SML:计算节点