为一个查询中的每一行分配一个变量
Assign a variable to each row from one query
如何为下面这个查询创建的 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 这符合我的看法
return View::make('subjects', compact(array('firstrow',
'secondrow', 'thirdrow', 'fourthrow')));
所以我可以在我看来这样的事情
{{$firstrow->name}} {{$firstrow->title1}}
以上只是一个例子,所以在现实生活中我有很多列,这就是我正在寻找解决这个问题的优雅方法的原因。
这很尴尬,但如果您需要将每一行保存在一个变量中,双美元符号可能就是您想要的:
$var = "value"; // variable is $var
$$var = "other value"; // variable is $value
每一行都将创建一个新变量,该变量设置为该行的唯一值,例如 id 值。伪代码示例:
foreach($topics as $t) {
$id = $t.id
$$id = $t
}
您的查询将 return 模型集合。您可以简单地将其转换为数组,然后使用 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);
如何为下面这个查询创建的 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 这符合我的看法
return View::make('subjects', compact(array('firstrow',
'secondrow', 'thirdrow', 'fourthrow')));
所以我可以在我看来这样的事情
{{$firstrow->name}} {{$firstrow->title1}}
以上只是一个例子,所以在现实生活中我有很多列,这就是我正在寻找解决这个问题的优雅方法的原因。
这很尴尬,但如果您需要将每一行保存在一个变量中,双美元符号可能就是您想要的:
$var = "value"; // variable is $var
$$var = "other value"; // variable is $value
每一行都将创建一个新变量,该变量设置为该行的唯一值,例如 id 值。伪代码示例:
foreach($topics as $t) {
$id = $t.id
$$id = $t
}
您的查询将 return 模型集合。您可以简单地将其转换为数组,然后使用 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);