我正在制作一個小型的副項目,用戶可以在其中上傳視頻/共享視頻。我有一個稱為標簽的功能,在上傳屏幕中,您可以選擇您的視頻所屬的標簽(有點像 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);

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
我會設置一個標簽表和一個 tag_video 數據透視表。然后為視頻和標簽賦予彼此的 ownToMany 關系。
這樣你就可以查詢標簽關系上的視頻:?$videos = Tag::find(1)->videos
這將提高可讀性,并使您更輕松地管理視頻上的標簽 - 并符合數據庫的規范化。
- 2 回答
- 0 關注
- 157 瀏覽
添加回答
舉報
0/150
提交
取消