我的问题是关于在Laravel 4.1 / ORM中查询关系。
我有一个" Labs"模特和"日期"模型。这两个配置为具有双向关系:
Dates.php:
public function lab(){
return $this->belongsTo('Labs');
}
Labs.php:
public function dates() {
return $this->hasMany('Dates');
}
在我的控制器中,我想查询我的实验室,并获得日期为$的实验室:
$today = new DateTime('today');
$activeLab = Labs::hasDate($today);
return $activeLab;
类似的东西......但这当然不起作用。
如何检索" Lab"它拥有的日期与我提供的日期相符吗?
感谢您的帮助!
编辑:额外的代码进度..
$today = new DateTime('today');
$today = $today->format('Y-m-d');
$activeLab = Labs::whereHas('dates', function($q) use ($today){
$q->where('dates.date', $today);
})->get();
return $activeLab;
最终修改 - 解决方案:
感谢deczo我们能够确定问题。默认情况下,Eloquent使用模型名称链接到外键。我的模型被命名为Labs(复数),因此它在labs_id
表中查找dates
。您可以在Labs
模型hasMany()
语句中指定外键:
public function dates() {
return $this->hasMany('Dates', 'lab_id');
}
答案 0 :(得分:1)
$search; // value to find
Lab::whereHas('dates', function ($q) use ($search) {
$q->where('dates.someColumn', $search);
})->get();
它将返回Labs
具有与给定WHERE
子句匹配的相关日期。
更改Labs
上的关系:
public function dates() {
return $this->hasMany('Dates', 'lab_id');
}