我有一个flights
表,它有两个外键列:origin和destination,它们都链接到airports
表。现在我可以急切地加载记录:
Flight::with('origin', 'destination')->get();
但现在我想做点什么:
Flight::with('origin', 'destination')->where('origin.name', 'LIKE', "$query%")->get();
但是它给了我一个错误,说明origin.name
的名称没有列对我有意义,但我如何在急切加载的数据中搜索记录?
答案 0 :(得分:1)
whereHas
应该有效:
Flight::with('origin', 'destination')->whereHas('origin', function($q) use ($query){
$q->where('name', 'LIKE', "$query%");
})->get();
答案 1 :(得分:0)
你需要一个关闭来使它正确。这是一个简单的例子。
$places = Flight::with(array('origin' => function($query) use($query_name)
{
$query->where('name', 'LIKE', "$query_name%");
}))->get();
希望这有帮助。