Laravel外键下拉列表

3
我有两张表:
  • CUSTOMERS(id,full_name,company_id)
  • COMPANIES(id,company_name)
我已经创建了两个表之间的关系,并且它很好地工作,因为我可以像这样在客户视图中显示公司名称:$customer->company->company_name 现在我在客户“创建”和“编辑”视图上遇到了问题。我希望在“创建”和“编辑”视图中将公司名称作为下拉菜单(表单选择器)。然后将公司ID插入CUSTOMERS表。
示例图片: enter
2个回答

6
您需要将公司提供为数组('id' => 'name'),并使用Form::select方法进行选择:
// Controller, repo or wherever you want it:
$companies = Company::lists('company_name','id');

// $companies passed to the view, then in the create view:
{{ Form::select('company_id', $companies, null, $options) }}

// edit view:
{{ Form::model($customer, array('route' => array('YourCustomerUpdateRoute', $customer->id))) }}
...
{{ Form::select('company_id', $companies, null, $options) }} 
// form model binding autopopulates the form, so correct option will be selected

提交表单后,先验证输入内容,检查提供的 company_id 是否存在于公司表中,然后保存客户信息,就这些。

0
Jarek Tkaczyk的回答非常好。但是,如果您想为创建表单设置默认值并避免预先选择$companies数组中的第一个元素,您可以在控制器中执行以下操作:
$companies = Company::lists('company_name','id');
$companies = array('0' => 'Select Company') + $companies;

按照Jarek Tkaczyk的建议,将$companies数组传递到视图中。

注意:

我已经完成了

$companies = array('0' => 'Select Company') + $companies;

为了保留数组键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接