【发布时间】:2016-06-29 11:14:18
【问题描述】:
我定义了具有以下关系的 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();
尽管从技术上讲 from 图像 to 列表的关系没有被调用,因为自定义属性 BfsListing 模型中的引用被附加到导致模型嵌套的图像中,所以我获取 BfsListing->BfsImages->BfsListing.
我的问题是,有没有办法引用父模型而不实际附加它并返回它的数据?或者..也许有更好的方法可以将一个变量从父级传递给子级,这样就可以在不再次调用关系的情况下使用它?
说实话,因为我的所有模型都被缓存了,所以我不太关心来回的多个查询,我只想从图像模型中删除不必要的数据,但是我可以使用一些聪明的方法来避免重复查询。
编辑
可以在不使用这样的关系的情况下引用其他模型:
$this->listing()->setEagerLoads([])->first()->auth_agent_id;
但这仍然意味着对父模型的引用将被进行一次,这再次导致两级嵌套(因此基本上问题没有解决,但在某些情况下这将有助于避免无限循环)。
如果不重新加载父模型,我仍然无法弄清楚如何调用它。
【问题讨论】: