我正在制作一个小型的副项目,用户可以在其中上传视频/共享视频。我有一个称为标签的功能,在上传屏幕中,您可以选择您的视频所属的标签(有点像 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');
出于某种原因,这让我感到困惑,尽管我认为这应该很容易实现。如果还有其他方法可以做到这一点,请告诉!预先感谢您的任何建议!
回首忆惘然
江户川乱折腾