如何在 Laravel 8 中使用 WhereIn 查询
How to Use WhereIn Query in Laravel 8
控制器
public function detail(Peserta $peserta)
{
// get konfirmasi_id
$konfirmasi = KonfirmasiPembayaran::where('email',$peserta->email)->select('id')->get();
$payments = BankSettlement::whereIn('konfirmasi_id',array($konfirmasi->id))->get();
// dd($payments);
$tagihan = Tagihan::where([['peserta_id', $peserta->id],['type', 3]])->first();
return view('data.peserta.detail', ['data' => $peserta, 'payments' => $payments,'tagihan' => $tagihan]);
}
我想显示来自基于 konfirmasi_id 的 BankSettlement 的数据。在这里我尝试像这样使用 WhereIn 查询,但仍然错误“属性 [id] 在这个集合实例上不存在。”.
$konfirmasi 有如上图的数据。
根据 konfirmasi_id 显示来自 BankSettlement 的数据的正确方法是什么?谢谢
试试这个改变:
$konfirmasi = KonfirmasiPembayaran::where('email',$peserta->email)->pluck('id')->toArray();
$payments = BankSettlement::whereIn('konfirmasi_id',$konfirmasi)->get();
这是将集合更改为数组的错误方法。
$payments=BankSettlement::whereIn('konfirmasi_id',array($konfirmasi->id))->get();
你应该这样做
public function detail(Peserta $peserta)
{
// get konfirmasi_id
$konfirmasi = KonfirmasiPembayaran::where('email',$peserta->email)
->select('id')
->get()
->pluck('id')
->toArray(); //This will return an array of ids
$payments = BankSettlement::whereIn('konfirmasi_id',$konfirmasi)->get();
// dd($payments);
$tagihan = Tagihan::where([['peserta_id', $peserta->id],['type', 3]])->first();
return view('data.peserta.detail', ['data' => $peserta, 'payments' => $payments,'tagihan' => $tagihan]);
}
如果您不必重用$konfirmasi
的结果,那么使用子查询会更好。编写子查询是一种优化方式。如果您编写两个不同的查询,那么将有两个单独的数据库连接请求。
$konfirmasi = KonfirmasiPembayaran::where('email',$peserta->email)->select('id');
$payments = BankSettlement::whereIn('konfirmasi_id', $konfirmasi )->get();
控制器
public function detail(Peserta $peserta)
{
// get konfirmasi_id
$konfirmasi = KonfirmasiPembayaran::where('email',$peserta->email)->select('id')->get();
$payments = BankSettlement::whereIn('konfirmasi_id',array($konfirmasi->id))->get();
// dd($payments);
$tagihan = Tagihan::where([['peserta_id', $peserta->id],['type', 3]])->first();
return view('data.peserta.detail', ['data' => $peserta, 'payments' => $payments,'tagihan' => $tagihan]);
}
我想显示来自基于 konfirmasi_id 的 BankSettlement 的数据。在这里我尝试像这样使用 WhereIn 查询,但仍然错误“属性 [id] 在这个集合实例上不存在。”.
$konfirmasi 有如上图的数据。
根据 konfirmasi_id 显示来自 BankSettlement 的数据的正确方法是什么?谢谢
试试这个改变:
$konfirmasi = KonfirmasiPembayaran::where('email',$peserta->email)->pluck('id')->toArray();
$payments = BankSettlement::whereIn('konfirmasi_id',$konfirmasi)->get();
这是将集合更改为数组的错误方法。
$payments=BankSettlement::whereIn('konfirmasi_id',array($konfirmasi->id))->get();
你应该这样做
public function detail(Peserta $peserta)
{
// get konfirmasi_id
$konfirmasi = KonfirmasiPembayaran::where('email',$peserta->email)
->select('id')
->get()
->pluck('id')
->toArray(); //This will return an array of ids
$payments = BankSettlement::whereIn('konfirmasi_id',$konfirmasi)->get();
// dd($payments);
$tagihan = Tagihan::where([['peserta_id', $peserta->id],['type', 3]])->first();
return view('data.peserta.detail', ['data' => $peserta, 'payments' => $payments,'tagihan' => $tagihan]);
}
如果您不必重用$konfirmasi
的结果,那么使用子查询会更好。编写子查询是一种优化方式。如果您编写两个不同的查询,那么将有两个单独的数据库连接请求。
$konfirmasi = KonfirmasiPembayaran::where('email',$peserta->email)->select('id');
$payments = BankSettlement::whereIn('konfirmasi_id', $konfirmasi )->get();