使用外键进行SQL搜索

问题描述 投票:0回答:1

我有两张桌子:啤酒和啤酒厂

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?

mysql sql
1个回答
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 ?

替换?分别用啤酒搜索词和啤酒厂搜索词

© www.soinside.com 2019 - 2024. All rights reserved.