簡體   English   中英

如何在 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]);
    }

編輯:閱讀Laravel Collections|Pluck

如果您不必重用$konfirmasi的結果,那么最好使用子查詢。 編寫子查詢是優化的方式。 如果您編寫兩個不同的查詢,那么將有兩個單獨的數據庫連接請求。

Laravel 子查詢

$konfirmasi = KonfirmasiPembayaran::where('email',$peserta->email)->select('id');

$payments   = BankSettlement::whereIn('konfirmasi_id', $konfirmasi )->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM