Laravel外键下拉列表

时间:2014-04-25 03:11:27

标签: laravel laravel-4 eloquent

我有两张桌子:

  • CUSTOMERS(id,full_name,company_id)
  • 公司(id,company_name)

我已经创建了两个表之间的关系,并且它工作正常,因为我可以在客户视图中显示公司名称,如下所示:$customer->company->company_name

我现在遇到了客户createedit观看的问题。我想在创建和编辑视图中将company_name作为下拉列表(Form Select)。然后将公司ID插入CUSTOMERS表。

enter

2 个答案:

答案 0 :(得分:6)

您需要提供Form :: select与公司作为数组('id'=>'name'):

// 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,并保存客户,这就是全部。

答案 1 :(得分:0)

Jarek Tkaczyk的回答非常好。但是,如果您想为create form创建一个默认值并避免预先选择$ companies数组中的第一个元素,您可以在控制器中执行以下操作:

$companies = Company::lists('company_name','id');
$companies = array('0' => 'Select Company') + $companies;

然后将$ companies数组传递给视图,就像Jarek Tkaczyk所说。

注意:

我做了

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

以保留数组键。