渴望加载记录后在Laravel中搜索?

时间:2015-01-06 06:28:48

标签: php search laravel laravel-4 eager-loading

我有一个flights表,它有两个外键列:origin和destination,它们都链接到airports表。现在我可以急切地加载记录:

Flight::with('origin', 'destination')->get();

但现在我想做点什么:

Flight::with('origin', 'destination')->where('origin.name', 'LIKE', "$query%")->get();

但是它给了我一个错误,说明origin.name的名称没有列对我有意义,但我如何在急切加载的数据中搜索记录?

2 个答案:

答案 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();

希望这有帮助。