在 Laravel 的预加载中搜索

Search within Laravel's 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'));
}

现在我实际上失败了,我如何使用模型 Station

中指定的 $inid 获取 instrument

这是我设置模型的方法

class Station extends Model {

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

以及乐器

class Instrument extends Model {

    protected $primaryKey = 'in_id';
    public function station()
    {
        return $this->belongsTo('App\Station', 'in_stid');
    }
}

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

谢谢

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

替换

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

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

}])->get();