【问题标题】:How can I search with belongsto laravel?如何使用属于 laravel 进行搜索?
【发布时间】:2017-04-23 06:01:33
【问题描述】:

我在商品详情中搜索用户名的查询如下:

$data = Store::join('users AS b', 'b.id', '=', 'stores.user_id')
             ->where('b.name', 'like', '%hazard%')
             ->paginate();

它有效。但我使用 join 来做到这一点。

我怎样才能使用belongto?

我的店铺模型是这样的:

class Store extends Model
{   
    protected $fillable = ['name', 'user_id', ...];
    public function user()
    {
        return $this->belongsTo(User::class,'user_id', 'id');
    }
    ...
}

【问题讨论】:

    标签: php laravel search laravel-5.3 laravel-eloquent


    【解决方案1】:

    使用whereHas():

    Store::whereHas('user', function($q) use($username) {
            $q->where('name', 'like', '%'.$username.'%');
        })->paginate(5);
    

    【讨论】:

      【解决方案2】:

      您可以使用Searchable 包来搜索模型字段及其关系字段

      use Nicolaslopezj\Searchable\SearchableTrait;
      
      class User extends \Eloquent
      {
      use SearchableTrait;
      
      /**
       * Searchable rules.
       *
       * @var array
       */
      protected $searchable = [
          /**
           * Columns and their priority in search results.
           * Columns with higher values are more important.
           * Columns with equal values have equal importance.
           *
           * @var array
           */
          'columns' => [
              'users.first_name' => 10,
              'users.last_name' => 10,
              'users.bio' => 2,
              'users.email' => 5,
              'posts.title' => 2,
              'posts.body' => 1,
          ],
          'joins' => [
              'posts' => ['users.id','posts.user_id'],
          ],
      ];
      
      public function posts()
      {
          return $this->hasMany('Post');
      }
      
      }
      

      使用:

      $users = User::search($query)->get();
      

      【讨论】:

        猜你喜欢
        • 2020-11-08
        • 1970-01-01
        • 1970-01-01
        • 2018-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-03
        相关资源
        最近更新 更多