Php 方法未找到laravel模型
我有两种型号,JadwalTerapisKlinik和PesertaKlinik 我尝试使用以下代码调用数据:Php 方法未找到laravel模型,php,laravel,eloquent,Php,Laravel,Eloquent,我有两种型号,JadwalTerapisKlinik和PesertaKlinik 我尝试使用以下代码调用数据: $data = JadwalTerapisKlinik::whereHas('pesertaKlinik', function($q){ $q->whereHas('timeControlling', function($qq){ $qq->where('status', 'done');
$data = JadwalTerapisKlinik::whereHas('pesertaKlinik', function($q){
$q->whereHas('timeControlling', function($qq){
$qq->where('status', 'done');
});
})->with(['pesertaKlinik' => function($q){
$q->with(['timeControlling' => function($qq){
$qq->where('status', 'done');
}]);
}])->orderBy('tanggal', 'desc')->get();
$data = $data->pesertaKlinik()->paginate(10);
但结果是“pesertaKlinik方法不存在。”
这是JadwalTerapisKlinik模型中的pesertaKlinik方法:
public function pesertaKlinik(){
return $this->hasMany(PesertaKlinik::class, 'jadwal_terapis_id');
}
但是当我在第一个查询中使用find(1)
而不是get()
时,它的工作状态很好
结构模型:JadwAlterapi有多个PesertaKlinik,PesertaKlinik有一次控制
我的代码怎么了?提前谢谢。构建器上的
get
调用将返回模型集合,而不是单个模型实例。集合没有pesertaKlinik
方法
也许您正在寻找生成器上的
first
方法来返回单个模型实例或null,而不是get
方法。您应该只使用get()=>来执行查询
或paginate()=>来执行查询并对结果进行分页
。不是两个都被锁着
您可以始终使用命令
toSql()
代替get()。同时,我认为您可以通过将关系嵌套到
中,以更简单的方式查询JadwalTerapisKlinik
模型,如下所示:
$data = JadwalTerapisKlinik::whereHas('pesertaKlinik.timeControlling', function($q){
$q->where('status', 'done');
})->orderBy('tanggal', 'desc')->paginate(10); // instead of get(), call your paginate() method here
$data = JadwalTerapisKlinik::whereHas('pesertaKlinik.timeControlling', function($q){
$q->where('status', 'done');
})->with(['pesertaKlinik.timeControlling' => function($q){
$q->where('status', 'done');
}])->orderBy('tanggal', 'desc')->paginate(10);
现在类似地,您的急切加载的关系与上述查询类似,如下所示:
$data = JadwalTerapisKlinik::whereHas('pesertaKlinik.timeControlling', function($q){
$q->where('status', 'done');
})->orderBy('tanggal', 'desc')->paginate(10); // instead of get(), call your paginate() method here
$data = JadwalTerapisKlinik::whereHas('pesertaKlinik.timeControlling', function($q){
$q->where('status', 'done');
})->with(['pesertaKlinik.timeControlling' => function($q){
$q->where('status', 'done');
}])->orderBy('tanggal', 'desc')->paginate(10);
$data
变量现在包含一组JadwalTerapisKlinik
模型,这些模型通过whereHas
具有指定的约束,以及与具有的急切加载关系
因此,为了能够迭代集合及其数据,您肯定需要一个循环(在控制器代码或视图中):
请添加您的模型的结构JadwalTerapisKlinik
,pesertaKlinik
,以及timeControlling
。结构模型:jadwalterapi有许多pesertaKlinik,PesertaKlinik有一个时间控制。JadwalTerapisKlinik的模式中的tanggal
列是吗?检查我的答案是否有帮助。实际上我想通过JadwalTerapis
中的tanggal
列按顺序获取所有时间控制和PesertaKlinik数据。我已被删除get()
仍然会得到错误结果调用undefined方法
谢谢你的回答,我想要的是调用所有数据pesertaKlinik
,在JadwalTerapisKlinik
中使用orderBy列tanggal
。我需要一个简单的代码,但我找不到。所以我使用这个PesertaKlinik::join('jadwal_terapis','peserta_klinik.jadwal_terapis_id','=','jadwal_terapis.id')->orderBy('jadwal_terapis.tanggal','desc')->分页(15)代码>谢谢你试着帮助我:)不客气,但请随时查看雄辩的力量。