我想一次查询3个单独的表。主要的一个是Criteria
,has Many
链接的两个criteria_id
表格为Bedrooms
和Properties
。
Criteria
可以包含多个Bedrooms
和多个Properties
:
标准模型
public function bedrooms()
{
return $this->hasMany('Bedroom');
}
public function properties()
{
return $this->hasMany('Property');
}
我不确定这是否可行,但我想查询这两个表以及Criteria
以查看哪些条件具有某个卧室和某个属性类型。请注意,每个criteria_id可能会存储多个卧室和属性。
到目前为止,我的查询是:
$criterias = Criteria::select('id')
->where('min', '<=', Input::get('single_value'))
->lists('id');
我唯一合乎逻辑的解释是 -
获取所有标准,其中Min&lt; = Value和Criteria.Bedrooms = 1和 Criteria.Properties = 5.
好像要循环查看条件是否存在具有该值的卧室/属性。
非常感谢你的帮助。
答案 0 :(得分:0)
尝试Eager Loading关系
$criterias = Criteria::with('bedrooms', 'properties')
->where('min', '<=', Input::get('single_value'))
->lists('id');
答案 1 :(得分:0)
如果您只查找符合约束条件的条件,则可以在卧室和财产关系中使用whereHas()
。然后添加您的where()
和lists()
。
$bedroom_id = '1';
$property_id = '5';
$criteria = Criteria::whereHas('bedrooms', function($q) use ($bedroom_id) {
$q->where('bedroom', $bedroom_id);
})->whereHas('properties', function($q) use ($property_id) {
$q->where('property', $property_id);
})->where('min', '<=', Input::get('single_value'))->lists('id');
Criteria.Bedrooms = 1 and Criteria.Properties = 5
有点模糊,但我把它添加到应该去的地方。我猜你实际上分别是id
和1
的{{1}}所以它将获得所有标准同时具有id为1的卧室和id为5的属性。