亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel:WhereIn 不提取任何值

Laravel:WhereIn 不提取任何值

PHP
ABOUTYOU 2023-10-15 14:57:13
我正在制作一個小型的副項目,用戶可以在其中上傳視頻/共享視頻。我有一個稱為標簽的功能,在上傳屏幕中,您可以選擇您的視頻所屬的標簽(有點像 YouTube)。除了一件事之外,這在大多數情況下都可以正常工作。在這個網站上,您可以通過視頻標簽進行瀏覽。因此,如果您點擊“電影”標簽,您就會轉到顯示帶有“電影”標簽的所有視頻的網頁。它看起來像什么我現在執行此操作的方法是使用簡單的Where In 語句。在我的數據庫中,我有一個專門用于視頻的表,其中一列是您為視頻選擇的所有標簽 ID(采用 json 格式)。一旦您點擊特定標簽,它將獲取該視頻標簽與您點擊的標簽 ID 匹配的所有視頻。但是當我嘗試單擊該標簽時,它什么也沒返回。控制器代碼public function browse($name) //(This is the name of the tag from web route){    $tag = Tag::wheretag($name)->first();        if ($tag){    $tagi = array($tag->id);    $uploads = Video::whereIn('tags', $tagi)->paginate(10);    return view('browse')->with('uploads', $uploads)->with('name', $name)    }else{        return redirect()->back()->with('error', 'That tag does not exists');    }}網絡路線Route::get('/browse/{name}', 'Controller@browse')->name('Browse');出于某種原因,這讓我感到困惑,盡管我認為這應該很容易實現。如果還有其他方法可以做到這一點,請告訴!預先感謝您的任何建議!
查看完整描述

2 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

我有一個專門用于視頻的表,其中一列是您為視頻選擇的所有標簽 ID(采用 json 格式)。

WhereIn 不適用于 json 字段。要查詢您需要的 json 字段whereJsonContains。

$uploads = Video::whereJsonContains('tags', $tagi)->paginate(10);


查看完整回答
反對 回復 2023-10-15
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

我會設置一個標簽表和一個 tag_video 數據透視表。然后為視頻和標簽賦予彼此的 ownToMany 關系。

這樣你就可以查詢標簽關系上的視頻:?$videos = Tag::find(1)->videos

這將提高可讀性,并使您更輕松地管理視頻上的標簽 - 并符合數據庫的規范化。


查看完整回答
反對 回復 2023-10-15
  • 2 回答
  • 0 關注
  • 157 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號