变量未显示在刀片​​模板上

时间:2016-01-18 01:37:16

标签: php laravel laravel-5

我在一个表单中创建了一个包含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>

1 个答案:

答案 0 :(得分:1)

DB::get()返回一个stdClass对象数组。因此,$rules是一个数组,因此您不能只访问$rules->field1之类的属性。您需要迭代数组以找到您要查找的实际对象,然后检查该对象。或者,如果实际上只有一条记录,则可以使用first()代替get()

DB::find()返回stdClass个对象或null,具体取决于是否找到了记录。这就是您的自动化工作的原因。