在 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();
我有这样写的可选路线
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();