我有两张桌子:啤酒和啤酒厂
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?
由于这是标记的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 ?
替换?分别用啤酒搜索词和啤酒厂搜索词