我正在创建一个 CRUD,其中包含 2 个表单:自动化和规则。 1 个自动化有 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>
对于自动化中的 1 个字段:
<div class="form-group">
<label for="task-name" class="col-sm-3 control-label">Action on Campaigns</label>
<div class="col-sm-6">
{!!
Form::select(
'action_id',
(['' => 'Select an Action'] + $actions),
(isset($automations->action_id) ? $automations->action_id : null),
['class' => 'form-control']
)
!!}
</div>
</div>
DB::get()
返回一个 stdClass 对象数组。因此,$rules
是一个数组,因此您不能只访问 $rules->field1
等属性。您需要迭代数组以找到要查找的实际对象,然后检查该对象。或者,如果实际上只有一条记录,则可以使用 first()
而不是 get()
。
DB::find()
返回stdClass
对象或 null,具体取决于是否找到记录。这就是您的自动化工作的原因。