我在一个表单中创建了一个包含2个模型的CRUD:自动化和规则。 1自动化有1条规则。在编辑表单上,我需要显示自动化和规则中的字段。 这是我编辑方法的控制器。
NSObject
但是在我的表单上,我无法显示规则中的值,仅适用于自动化。我做错了什么?这是来自Rules:
的1个字段的刀片表单public function edit($id)
{
$actions = array(
1 => 'Enable',
2 => 'Pause',
);
$fields = \DB::table('fields')
->whereNull('field1_id')
->lists('field_name', 'id');
$schedules = \DB::table('schedules')
->lists('schedule_name', 'id');
$rules = \DB::table('rules')
->where('automation_id', '=', $id)
->get();
return view('automations.automations', [
'automations' => Automations::find($id),
'actions' => $actions,
'fields' => $fields,
'schedules' => $schedules,
'rules' => $rules
]);
自动化中的1个字段:
<div class="form-group">
<label for="task-name" class="col-sm-3 control-label">Field 1 </label>
<div class="col-sm-6">
{!!
Form::select(
'field1',
(['' => 'Select a Field'] + $fields),
(isset($rules->field1) ? $rules->field1 : null),
['class' => 'form-control','id' => 'field1']
)
!!}
</div>
</div>
答案 0 :(得分:1)
DB::get()
返回一个stdClass对象数组。因此,$rules
是一个数组,因此您不能只访问$rules->field1
之类的属性。您需要迭代数组以找到您要查找的实际对象,然后检查该对象。或者,如果实际上只有一条记录,则可以使用first()
代替get()
。
DB::find()
返回stdClass
个对象或null,具体取决于是否找到了记录。这就是您的自动化工作的原因。