我有一个查询,我想使用 Laravel 查询生成器添加一个集合。Hotel::addSelect([ 'selectableLocations' => AllLocations::orderBy('name')->get()]) ->with('location') ->get();好吧,这返回:[{"id":1,"name":"John Avenue"},{"id":4,"name":"Ontirio Village"},{"id":2,"name":"Rovie"},{"id":3,"name":"Movie Lot"}]SQLSTATE[HY093]:无效的参数号:混合命名和位置参数(SQL:从限制 100 偏移量 0中选择dogs)我知道这可能看起来像反模式,但我需要这个的原因是因为我有一个数据表,并且想要显示带有 AllLocations 的选择(下拉列表),以便用户可以在数据表中进行更改。我的想法是我可以$dog->selectableLocations看到所有位置。因为如果我不这样做,它将单独查询每一行。有没有办法做到这一点?如果我能达到这样的境界,那就完美了。$selectableLocations = AllLocations::get();$hotels = Hotel::addSelect([ 'selectableLocations' => $selectableLocations]) ->with('location') ->get();
1 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
编辑:
因为如果我不这样做,它将单独查询每一行。
由于您主要关心的是多个查询,因此如果您实现某种缓存,则可以避免数据库调用。为什么不将列表包含为自定义属性,从缓存加载集合?就像这样:
public function getAllLocationsAttribute()
{
return Cache::remember('all_locations', 30, function(){ //add remove seconds as required
return AllLocatiobs::get();
});
}
合并这两个集合怎么样?
$hotels = Hotel::get();
$selectableLocations = AllLocations::get();
$hotels->put('selectableLocations', $selectableLocations);
现在,$hotels->selectableLocations将是 AllLocations 的集合。
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消