Laravel,如何使用关系列的 where 条件?
我正在使用Laravel,并且在Eloquent ORM上有一个小问题。我可以使用JOIN简单地使用SQL查询来工作,但我似乎无法让它与Eloquent一起工作!
这就是我想要的,我有两个标签。一个是“餐馆”,另一个是“Restaurant_Facilities”。
表格很简单。和一对一关系。就像有一个表有 , , , 等 和 另一个表叫 , , , , , 等restaurant
id
name
slug
restaurant_facilities
id
restaurant_id
wifi
parking
现在我想做的是..加载所有有wifi = 1或wifi = 0的餐厅。我怎么能用Eloquent做到这一点?我已经尝试了急切加载,数据透视表,with(),collections()似乎没有任何效果!
我对多对多关系有同样的问题!我有同一张桌子,一张桌子和一张桌子。cuisines
restaurant
cuisine
restaurant_cuisine_connection
但是我如何使用其ID加载特定美食中的所有餐厅?
这有效。
Cuisine::find(6)->restaurants()->get();
但我想从餐厅加载这个:模型不是从美食。因为我有很多条件链接在一起..它用于搜索和过滤/浏览页面。
任何想法或方法?我已经为此挣扎了3天,仍然没有答案。
示例模型 :
class Restaurant extends Eloquent {
protected $table = 'restaurants';
public function facilities() {
return $this->hasOne('Facilities');
}
}
class Facilities extends Eloquent {
protected $table = 'restaurants_facilities';
public function restaurant() {
return $this->belongsTo('Restaurant');
}
}
PS :这似乎正在工作。但这不是雄辩的方式对吧?
Restaurant::leftJoin(
'cuisine_restaurant',
'cuisine_restaurant.restaurant_id',
'=', 'restaurants.id'
)
->where('cuisine_id', 16)
->get();
另外,在没有其他查询的情况下查找具有特定列值的餐馆计数的最佳方法是什么?喜欢。。我必须找到有停车场=1和wifi=1的餐厅总数?
请对此提供帮助。
谢谢。