您好,我在我的 laravel 應用程式中使用查詢生成器。我正在嘗試使用查詢生成器中的 implode() 方法。
$edi_data_mysql = DB::table('orders_grid')
->select('id')
->where('stato_ordine', 1)
->get()
->implode('id', "', '");
dump($edi_data_mysql); // returns "2, 3, 5"
$jde_data = DB::connection('oracle')->table('table')
->select('col1', 'col2', 'col3', 'col4')
->where('col5', DB::raw("TRIM('Y')"))
->whereIn('oracle_id', $edi_data_mysql)
->get();
因此,例如,我期望一個由以下組成的字串:'2,3,4...' 我必須在下一個查詢中使用這個字串,我使用原始查詢 IN ('value', 'value')
我正在嘗試將這些 ID 包含在單引號中,例如“'2'、'3'、'4'”,但沒有結果。
我知道我可以稍后使用接受陣列作為第二個引數的 whereIn() 方法,但問題始終與 ID 換行有關,因為在 db 上該值是一個字串。
我應該走哪條路?我需要避免回圈*
uj5u.com熱心網友回復:
通常whereIn
方法接受array
作為第二個引數。但你正在傳遞字串。我認為這應該可以解決您的問題。
$edi_data_mysql = DB::table('orders_grid')
->select('id')
->where('stato_ordine', 1)
->pluck('id')
->toArray();
dump($edi_data_mysql); // returns **[2, 3, 5]**
$jde_data = DB::connection('oracle')->table('table')
->select('col1', 'col2', 'col3', 'col4')
->where('col5', DB::raw("TRIM('Y')"))
->whereIn('oracle_id', $edi_data_mysql)
->get();
通過這種方式,您可以避免回圈。無論是字串還是整數,都應該適用。
uj5u.com熱心網友回復:
我是這樣解決的:
$edi_data_mysql = DB::table('orders_grid')
->select('id')
->where('stato_ordine', 1)
->get()
->implode('id', "','");
$data_id = "'" . $edi_data_mysql . "'";
$jde_data = DB::connection('oracle')->table('table')
->select('col1', 'col2', 'col3', 'col4')
->where('col5', 'Y')
->whereRaw("TRIM(col5) IN ($data_id)")
->get();
這作業正常
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/506724.html
上一篇:我需要根據laravelcarbon生成一個好的日期和時間,但是我需要從這個回傳中洗掉時區
下一篇:如何獲取連接表中第一個表的ID