【发布时间】:2019-11-11 22:36:15
【问题描述】:
我查询模型“Royalty”并急切加载关系“所有者”。模型返回结果,包括关系。
class Royalty extends Model
{
protected $guarded = [];
protected $dates = ['created_at', 'updated_at', 'date', 'calculated_at'];
protected $casts = [
'properties' => 'object',
];
public function owner()
{
return $this->belongsTo(Owner::class);
}
}
class Owner extends Model
{
use SoftDeletes;
protected $guarded = [];
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
protected $casts = [
'properties' => 'object',
];
public function royalties()
{
return $this->hasMany(Royalty::class);
}
}
$royalty = Royalty::with('owner')->where('id', 1)->first();
结果符合预期,关系“所有者”已预先加载:
Royalty {#542 ▼
#guarded: []
#dates: array:4 [▶]
#casts: array:1 [▶]
#connection: "development"
#table: "royalties"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:21 [▶]
#original: array:21 [▶]
#changes: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: array:1 [▼
"owner" => Owner {#562 ▼
#guarded: []
#dates: array:4 [▶]
#casts: array:1 [▶]
#connection: "development"
#table: "owners"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:8 [▶]
#original: array:8 [▶]
#changes: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#forceDeleting: false
}
]
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
}
但是,当我调用与 $royalty->owner 的关系时,结果为 NULL。我在这里做错了什么?
dd($royalty->owner); NULL
【问题讨论】:
-
试试
dd($royalty['owner']) -
当我做 dd($royalty['owner']) 时也为 NULL
-
你能提供来自你的控制器和表结构的代码吗?
-
额外信息:当我尝试 $owner = $royalty->owner()->first();我得到了主人的预期。所以好像关系没什么问题?
-
royalties表是否有owner列?
标签: laravel eloquent relationship eager-loading