我有一个多态关系,其中一个表' map_nodes'有一对多到' system_constants'。
我似乎无法使用查询范围来急切加载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>
请注意,我确实定义了一个Relation :: morphMap,这允许我使用&#39; Nodes&#39;在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";}
任何帮助表示感谢。
答案 0 :(得分:0)
我不确定,但这似乎有效。我刚刚删除了查询范围,并使用&#39;做了明确的。
$ temp = MapNodes :: with(&#39; SystemConstants&#39;) - &gt; find(25786);