我的问题有点抽象,所以我无法解释。
我有一些表:表1称为videos
,其他表是戴尔,惠普,宏基等类别。
表1中包含 auto_increment 主要ID 1,2,3,4
等的视频。
视频编号1来自戴尔,2号是HP,3号是戴尔,4是宏碁。
表1中的数字1也表示为ID 1,表2中的数字2表示为ID 2,表3中的数字3表示为ID 3,表4中的表示为ID 4。
public function showCategory($cat) {
switch ($cat) {
case 'dell':
$dell = DB::table('dell')->get();
$videoid = '';
foreach ($dell as $video) {
$videoid .= $video->videoid.',';
}
echo $videoid; // this is an echo (test)
$videos = DB::table('videos')
->where('id', $videoid)
->orderBy('id', 'DESC')
->paginate(25);
break;
default:
# code...
break;
}
return view('index')->with(array('videos' => $videos));
}
此时,echo $ videoid;会告诉我所有的ID:
1,3,40,42,43,44,46,58,61,67,68,73,86,101,102,103,105,106,112,117,121,122,123,124,
(我有很多东西)
问题是,在索引页面上它只显示数字1.有人有想法吗?
答案 0 :(得分:1)
将whereIn
用于多个ID并使用explode方法生成ID数组
echo $videoid; // this is an echo (test)
$videoArray = explode("," , $videoid);
$videos = DB::table('videos')->whereIn('id', $videoArray)->orderBy('id', 'DESC')->paginate(25);
break;
更新:
您也可以使用简单连接
$videos = DB::table('videos as v')
->join('dell as d','d.videoid','=','v.id')
->orderBy('v.id', 'DESC')
->select('v.*')
->paginate(25);
break;
删除案例dell