在Laravel的热切载入中搜索

时间:2015-05-20 02:00:54

标签: php laravel-5 eager-loading

我有像这样写的可选路线

Route::get('{id}/{inid?}/{task?}', 'WelcomeController@station')->where(['id' => '[0-9]+', 'inid' => '[0-9]+']);

和像这样的控制器

public function station($id, $inid = null, $task = null)
{
    $obj = Station::findOrFail($id);
    $template = 'station';
    $app = array(
        'docTitle' => $obj->st_name,
        'lat' => $obj->st_lat,
        'lng' => $obj->st_lng,
        'appName' => $obj->setting->set_name,
        'linkId' => $id
    );      
    if ($inid) {
        $obj = $obj->instruments()->where("in_id", $inid);
        $template = 'form.index';
        dd($obj);           
    }

    return view($template, compact('obj', 'app'));
}

现在实际上我失败的是如何使用模型instrument的{​​{1}}内的指定$inid获取$obj

以下是我设置模型的方法

Station

和乐器

class Station extends Model {

    public function instruments()
    {
        return $this->hasMany('App\Instrument', 'in_stid');
    }
}

希望有人能告诉我在哪里可以查看官方文档来解决这个问题

由于

1 个答案:

答案 0 :(得分:1)

也许你正在寻找这样的东西?

替换

$obj = $obj->instruments()->where("in_id", $inid);

$obj = Station::where('id', $id)->with(['instruments' => function($query)
{
    $query->where('in_id', $inid);

}])->get();