边栏选项卡模板上未显示变量


Variable not showing on blade template

我正在创建一个 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,具体取决于是否找到记录。这就是您的自动化工作的原因。