php - Laravel:WhereIn不提取任何值
问题描述
我正在制作一个小项目,用户可以在其中上传视频/分享视频。我有这个称为标签的功能,其中上传屏幕,您可以选择您的视频属于哪些标签(有点像 YouTube)。这在大多数情况下都很好,除了一件事。在这个网站上,您可以通过视频标签进行浏览。因此,如果您单击“电影”标签,您将被发送到显示所有带有“电影”标签的视频的网页。
它看起来像什么
我现在这样做的方式是使用一个简单的 Where In 语句。在我的数据库中,我有一个专门用于视频的表格,其中一列是您为 json 格式的视频选择的所有标签 ID。单击特定标签后,它将获取视频标签与您单击的标签 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');
出于某种原因,这让我感到难过,尽管我认为它应该很容易实现。如果有其他方法可以做到这一点,请告诉!提前感谢您的任何建议!
解决方案
我有一个专门用于视频的表格,其中一列是您为 json 格式的视频选择的所有标签 ID。
WhereIn 不适用于 json 字段。要查询您需要的 json 字段whereJsonContains
。
$uploads = Video::whereJsonContains('tags', $tagi)->paginate(10);
推荐阅读
- flutter - 为什么颤振工具提示不起作用
- spring-boot - 单元测试中的 EntityManager - 春季启动
- python - 跨平台编程中的换行符
- python - 当我调用这个对象时,哪个方法直接返回一个类的元素?
- c# - 如何检查 PowerPoint 中是否打开了对话框?
- ios - 将 Swift 5 项目与 React Native 集成
- c++ - 当只有一个项目要构建但不能用于引用第一个项目的第二个项目时,在 x64 构建时强制 x86 和 x64 构建有效
- haskell - 关闭 AutoDeriveTypeable
- arrays - 如何显示数组中的图片
- linkedin-api - 在Linkedin上分享文章