我有一个这样的表关系Laravel框架关于急切加载特性的这个问题我的热切加载代码如下:$schedules = Schedule::whereHas( 'mahasiswa', function($mahasiswa) use ($start, $limit, $order, $dir, $search) { $mahasiswa->whereHas( 'document_thesises', function($documentThesis) use ($start, $limit, $order, $dir, $search) { $documentThesis->where('npm', 'LIKE', "%$search%") ->orWhere('name', 'LIKE', "%$search%") ->offset($start) ->limit($limit) ->orderBy($order, $dir); }); })->get();对于上表中的模型,代码如下: Mahasiswa 模型:public function document_thesises(){ return $this->hasMany(DocumentThesis::class, 'id', 'document_thesis_id');}文献论文模型:public function mahasiswa(){ return $this->belongsTo(Mahasiswa::class);}时间表模型:public function mahasiswa(){ return $this->belongsTo(Mahasiswa::class, 'mahasiswa_id', 'id');}我希望结果可以根据schedule表格显示表格中的所有数据document_thesis。但是,我得到了这样的错误:exception: "Illuminate\Database\QueryException"file: "/mnt/d/www/eta/vendor/laravel/framework/src/Illuminate/Database/Connection.php"line: 664message: "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'mahasiswas.document_thesis_id' in 'where clause' (SQL: select * from `schedules` where exists (select * from `mahasiswas` where `schedules`.`mahasiswa_id` = `mahasiswas`.`id` and exists (select * from `document_thesises` where `mahasiswas`.`document_thesis_id` = `document_thesises`.`id` order by `id` asc limit 10 offset 0) and `mahasiswas`.`deleted_at` is null))"trace: [,…]
2 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
抛出此异常的原因是 的关系Mahasiswa@document_thesises不正确。正如我们所看到的,所需的关系是一对多的。在 Laravel 术语中,HasMany应该使用这种关系。
目前您的代码表明它是一个BelongsTo关系,它需要相关模型的本地外键。查询试图加入mahasiswas.document_thesis_id不存在的相关模型。
将关系方法更改为hasMany应该可以解决问题。
// Mahasiswa model
public function document_thesises()
{
return $this->hasMany(DocumentThesis::class);
}
// DocumentThesis model
public function mahasiswa()
{
return $this->belongsTo(Mahasiswa::class);
}
忽然笑
TA贡献1806条经验 获得超5个赞
将 Mahasiswa 模型中的 document_thesises 函数更改为
public function document_thesises()
{
return $this->hasMany(DocumentThesis::class, 'document_thesis_id','id');
}
- 2 回答
- 0 关注
- 144 浏览
添加回答
举报
0/150
提交
取消