急切加载记录后在 Laravel 中搜索?
Search in Laravel after eager loading the records?
我有一个 flights
table,它有两个外键列:起点和终点,它们都链接到 airports
table。现在我可以很好地急切加载记录了:
Flight::with('origin', 'destination')->get();
但现在我想做类似的事情:
Flight::with('origin', 'destination')->where('origin.name', 'LIKE', "$query%")->get();
但它给我一个错误,说没有名称为 origin.name
的列,这对我来说很有意义,但是我如何在急切加载的数据中搜索记录?
whereHas
应该有效:
Flight::with('origin', 'destination')->whereHas('origin', function($q) use ($query){
$q->where('name', 'LIKE', "$query%");
})->get();
你需要一个闭包来让它正确。这是一个简单的例子。
$places = Flight::with(array('origin' => function($query) use($query_name)
{
$query->where('name', 'LIKE', "$query_name%");
}))->get();
希望对您有所帮助。
我有一个 flights
table,它有两个外键列:起点和终点,它们都链接到 airports
table。现在我可以很好地急切加载记录了:
Flight::with('origin', 'destination')->get();
但现在我想做类似的事情:
Flight::with('origin', 'destination')->where('origin.name', 'LIKE', "$query%")->get();
但它给我一个错误,说没有名称为 origin.name
的列,这对我来说很有意义,但是我如何在急切加载的数据中搜索记录?
whereHas
应该有效:
Flight::with('origin', 'destination')->whereHas('origin', function($q) use ($query){
$q->where('name', 'LIKE', "$query%");
})->get();
你需要一个闭包来让它正确。这是一个简单的例子。
$places = Flight::with(array('origin' => function($query) use($query_name)
{
$query->where('name', 'LIKE', "$query_name%");
}))->get();
希望对您有所帮助。