如何为下面此查询创建的4行中的每一行分配变量? (laravel,Eloquent / Fluent)
$topics = SubjectUser::where('user_id', 8)
->join('subjectlists', 'subjectlists.id', '=','subjectlists_user.subjectlist_id')
->select('subjectlists.name', 'subjectlists.title1')->orderBy(DB::raw('RAND()'))->take(4)->get();
或者如果任何人知道检索4个随机分开的行而没有重复的方法也会有所帮助。提前谢谢。
编辑:
理想情况下,我想将此视为
return View::make('subjects', compact(array('firstrow',
'secondrow', 'thirdrow', 'fourthrow')));
所以我可以在我看来这样的事情
{{$firstrow->name}} {{$firstrow->title1}}
以上只是一个例子,所以在现实生活中我有很多专栏,这就是我寻找一种解决这个问题的优雅方法的原因。
答案 0 :(得分:0)
这很尴尬,但如果你需要保存变量中的每一行,双美元符号可能就是你想要的:
$var = "value"; // variable is $var
$$var = "other value"; // variable is $value
每一行都会创建一个新变量,该变量设置为该行的唯一内容,如id值。 Psuedocode示例:
foreach($topics as $t) {
$id = $t.id
$$id = $t
}
答案 1 :(得分:0)
您的查询将返回一组模型。您只需将其转换为数组,然后使用array_combine()
$topics = SubjectUser::where('user_id', 8)
->join('subjectlists', 'subjectlists.id', '=','subjectlists_user.subjectlist_id')
->select('subjectlists.name', 'subjectlists.title1')->orderBy(DB::raw('RAND()'))->take(4)->get();
$topics = $topics->all();
$variableNames = ['firstrow', 'secondrow', 'thirdrow', 'fourthrow'];
$viewVariables = array_combine($variableNames, $topics);
return View::make('subjects', $viewVariables);