使用Lumen 5.5.2和illuminate/database v5.5.17。雄辯的關係返回null,但類似的關係很好
我有3個模型設置,其中一個屬於另一個2.所以報價,有一個區域和一個倉庫。
與倉庫的關係按預期工作,該區域返回null。
例如
$quoteModel = new Quote();
$quote = $quoteModel
->with('area')
->with('depot')
->where('id', '=', $id)
->first();
echo 'depot id : ' , $quote->depot->id , "<br>\n";
echo 'area id : ' , $quote->area->id , "<br>\n";
貯庫ID會被迴盪,因爲它不是一個對象的區域將導致錯誤。
將模型名稱作爲數組傳遞,或者只是請求區域(兩種方法)都不能解決此問題。
Quote.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as EloquentModel;
class Quote extends EloquentModel {
protected $table = 'quotes';
public function area() {
return $this->belongsTo('\App\Models\Area', 'area_id', 'id');
}
public function depot() {
return $this->belongsTo('\App\Models\Depot', 'depot_id', 'id');
}
}
Area.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as EloquentModel;
class Area extends EloquentModel {
protected $table = 'areas';
public $timestamps = false;
public $incrementing = false;
public function quotes() {
return $this->hasMany('\App\Models\Quote', 'area_id', 'id');
}
}
Depot.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model as EloquentModel;
class Depot extends EloquentModel {
protected $table = 'depots';
public $timestamps = false;
public $incrementing = false;
public function quotes() {
return $this->hasMany('\App\Models\Quote', 'depot_id', 'id');
}
}
如果我在Area.php創建一個解析錯誤,腳本將失敗,證明它正在被包括在內。
我有一個監聽器,所以我可以記錄查詢,他們顯示出來很好。
select * from `quotes` where `id` = 99192 limit 1
select * from `areas` where `areas`.`id` in (072)
select * from `depots` where `depots`.`id` in (07)
如果我手動運行區域查詢,它將返回我期望的行。
我試着改變區域關係的名稱,但它沒有幫助。
你使用了什麼雄辯的版本?你可以試試 - > with(['area','depot'])而不是鏈接它們嗎? – matiit
感謝您對版本的提醒。它們是寫作時最新的(我在5.4版本,升級沒有幫助或傷害) - 我更新了我的問題。可悲的陣列語法沒有幫助 – CodeMonkey