0
我有一個多態關係,其中一個表'map_nodes'具有一對多到'system_constants'。laravel 5.4多態關係 - 通過查詢範圍渴望讀取
我似乎無法使用查詢範圍來急切加載system_constants。沒有錯誤,只是沒有記錄。
這是我的模型。我只包括一個模型「map_nodes」:
namespace App\Modules\Olab\Models;
class SystemConstants extends BaseModel {
// Database:
// id INT(11) PK
// imageable_id INT(11)
// imageable_type VARCHAR(45)
// value BLOB
public function imageable() {
return $this->morphTo();
}
}
class MapNodes extends BaseModel {
public function scopeConstants($query) {
$query->with([ 'SystemConstants' => function ($query) {
$query->select('system_constants.id',
'system_constants.value');
} ]);
}
public function SystemConstants() {
return $this->morphMany('App\Modules\Olab\Models\SystemConstants', 'imageable');
}
}
這是我在system_constants表:
id, imageable_id, imageable_type, value
'1904', '25786', 'Nodes', <blob>
請注意,我有一個關係:: morphMap定義,這讓我使用imageable_type中的'節點'。
這是我運行的是什麼:
// returns collection of system_constant records
$temp = MapNodes::find(25786)->SystemConstants;
// doesn't work. get map_nodes record, but no eager load of system_constants
$temp = MapNodes::find(25786)->Constants()->first();
我有SQL日誌功能,我看到了上述兩種查詢正確的SQL。我可以在一個SQL工具,準確的查詢(用PARAM替換)和它的作品 - 它返回記錄:
select `system_constants`.`id`, `system_constants`.`value` from
`system_constants` where `system_constants`.`imageable_id` in (?) and
`system_constants`.`imageable_type` = ? - a:2:{i:0;i:25786;i:1;s:5:"Nodes";}
讚賞任何幫助。
試試這個:'MapNodes :: find(25786) - > constants() - > first();'//常量用小寫'c' – musicvicious
感謝您的回覆。不幸的是,沒有變化。 – cardinalPilot