我使用以下关系定义了Eloquent BfsImages 模型:
public function listing()
{
return $this->belongsTo('App\CommercialPeople\Models\BfsListings', 'bfs_listing_id', 'bfs_listing_id');
}
附加属性:
public function getPathAttribute()
{
return config('settings.bfs_image_path') . $this->listing->auth_agent_id . '/' . $this->filename;
}
正如您所看到的,该属性引用了父模型,因此当我调用以下内容时:
BfsListings::with('images')->all();
即使从技术上讲,从图像到列表的关系也不会被调用,因为自定义属性中的引用BfsListing模型会附加到导致模型嵌套的图像中,所以我获取BfsListing-> BfsImages-> BfsListing。
我的问题是,有没有办法引用父模型而不实际附加它并返回它的数据?或者......也许有一种更好的方法可以将一个变量从父变量传递给子变量,以便可以在不再调用该变量的情况下使用它?
说实话,因为我的所有模型都是缓存的,所以我不太关心来回的多个查询,我只是想从图像模型中删除不必要的数据,但是我可以用一些聪明的方法来解决它不重复查询。
修改
可以在不使用这样的关系的情况下引用其他模型:
$this->listing()->setEagerLoads([])->first()->auth_agent_id;
然而,这仍然意味着对父模型的引用将进行一次,这再次导致两级嵌套(因此基本上问题没有解决,但在某些情况下,这将有助于避免无限循环)。
我仍然无法弄清楚如何调用父模型而不再实际加载它。
答案 0 :(得分:0)
您可以为父级别名 - >子关系然后通过别名访问父级。
$a = $parent->child;
$b = $a->parent;