我想獲取登錄用戶所在的資料庫中的行。這是我的結構
Table = Meetings
Column = Participants (stores an array of users eg.["1","2","3"]);
Auth()->id() = "1"
我想要一個查詢,如果 Auth()->id() 存在于存盤用戶 id 陣列的參與者中,它將獲取行。
這是我的代碼:
$meetings = Meeting::join('venues', 'meetings.meeting_venue', '=', 'venues.id')
->join('organizers','meetings.meeting_organizer','=','organizers.id')
->join('users', 'meetings.user_id','=','users.id')
->where('meetings.participants', '=', auth()->id())
->get(['meetings.*', 'venues.venue_name', 'organizers.organizer_name','users.name', ]);
這是我在資料庫中的參與者列:
array:1 [▼
0 => array:1 [▼
"participants" => array:3 [▼
0 => "52"
1 => "56"
2 => "57"
]
]
]
$meetings = DB::table('meetings')->whereJsonContains('meetings.participants', auth()->id())->get()->toArray();
轉儲回傳空陣列。
uj5u.com熱心網友回復:
你可以使用一個技巧,這里是:
$meetings = Meeting::join('venues', 'meetings.meeting_venue', '=', 'venues.id')
->join('organizers','meetings.meeting_organizer','=','organizers.id')
->join('users', 'meetings.user_id','=','users.id')
->where('meetings.participants', 'like', "%\"{auth()->id()}\"%")
->get(['meetings.*', 'venues.venue_name', 'organizers.organizer_name','users.name']);
或者您可以使用 whereJsonContains(),如下所示:
$meetings = Meeting::join('venues', 'meetings.meeting_venue', '=', 'venues.id')
->join('organizers','meetings.meeting_organizer','=','organizers.id')
->join('users', 'meetings.user_id','=','users.id')
-> whereJsonContains('meetings.participants', auth()->id())
->get(['meetings.*', 'venues.venue_name', 'organizers.organizer_name','users.name']);
希望這對您有所幫助。你好
uj5u.com熱心網友回復:
找到了一種解決方法,我將 auth()->id() 分配給了一個變數,然后在查詢中添加了雙引號。下面是我是如何做到的
$uid = auth()->id();
-> whereJsonContains('meetings.participants', "$uid");
this works fine
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434994.html
