我有两个桌子:啤酒和啤酒厂
Schema::create('breweries', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id');
$table->foreign( 'user_id' )
->references( 'id' )->on( 'users' )
->onUpdate( 'cascade' );
$table->string('brewery_name');
$table->timestamps();
});
和
Schema::create('beer', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('brewery_id');
$table->foreign( 'brewery_id' )
->references( 'id' )->on( 'breweries' )
->onUpdate( 'cascade' );
$table->string('beer_name');
$table->timestamps();
});
我要搜索Beer_name和Brewery_name。
仅在搜索Beer_name时,我使用以下查询:
$beer = Beer::where('user_id', Auth::id())
->where(function($query) use ($search) {
$query->where('beer_name','LIKE','%'.$search."%")
->orWhere('brewery_id','LIKE','%'.$search."%")
})->get();
这很好用,因为'beer_name'和'brewery_id'都是啤酒表的字段。
如何更改此查询,以便我也搜索'brewery_name'(=啤酒厂表的一部分)而不是brewery_id?
答案 0 :(得分:1)
由于这是标记为SQL的,所以我用Sql查询而不是php(?)代码回答
SELECT *
FROM beer b
JOIN breweries r ON r.id = b.brewery_id
WHERE b.beer_name LIKE ?
OR r.brewery_name LIKE ?
替换?分别带有啤酒搜索词和啤酒搜索词