0
我的問題是關於查詢Laravel 4.1/ORM中的關係。Laravel 4.1查詢有多少關係?
我有一個「實驗室」模型和「日期」模型。這兩個被配置爲擁有一個2路的關係:
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;
類似的東西......但這當然不起作用。
如何檢索「實驗室」,其所擁有的日期與我提供的日期相符?
感謝您的幫助!
編輯:額外的代碼進步..
$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(複數),所以它在dates
表中查找labs_id
。您可以在Labs
模型hasMany()
語句中指定的外鍵:
public function dates() {
return $this->hasMany('Dates', 'lab_id');
}
,這將引發一個QueryException對我來說: '欄未發現SELECT * FROM實驗室,供(從date.labs_id = labs.id和dates.date = 2014-06-20)=> 1)中選擇count(*)' – Prefix
可能你應該在那裏有'lab_id'。無論如何顯示你的代碼。 –
德佐,我編輯了與代碼的原始帖子。 「日期」表中確實存在'lab_id',這是一個錯字,我很抱歉。 – Prefix