我按照关于Laravel的教程进行了操作,现在我的部分示例是为文章选择多个标签。所以这是一个多对多的关系。
我一直在尝试将多个数据传递到每个项目,然后将标签传递给标签的选择标签,然后是它的值。我必须显示学生的全名,但我的数据库将名称分为第一个,中间一个和最后一个。最初,这是我的控制器代码:
public function create()
{
$students = Student::lists(['first_name', 'id');
return view('cases.create', compact('students'));
}
然后我尝试了这个:
public function create()
{
$students = Student::lists(['first_name', 'last_name'], 'id');
return view('cases.create', compact('students'));
}
我收到此错误:
ErrorException in Builder.php line 1535:
strpos() expects parameter 1 to be string, array given
我认为它不允许我传递一个字符串。那么,我是否必须创建另一个变量来存储last_name然后以表格形式连接它?
答案 0 :(得分:0)
如果将数组传递给它,lists
方法将抛出异常。
(并且不确定传入由逗号分隔的字符串是否会在您的情况下给出预期结果,因为我无法在此上的Laravel文档中找到任何内容)。
以下应该为您提供帮助,使用all
方法:
$students = Students::all(['id', DB::raw('CONCAT(first_name, " ", last_name) as full_name'])->toArray();
在这里,您将在结果集中传递您需要的columns
数组。
但是,在您能够在视图中使用list
学生之前,您需要在您拥有的初始列表中进行一些调整(以防您想要与Form::select()
方法)一起使用:
$list = [];
foreach($students as $student){
$list[$student['id']] = $student['full_name'];
}
现在,您可以将此array
传递给视图并填充select
元素。