Laravel Состояние красноречия - PullRequest
0 голосов
/ 28 мая 2020

У меня вопрос по поводу Laravel Eloquent

Есть 2 модели

class User extends Model
{
    public static function search() {
        $request = request();
        return User::where(function ($q) use ($request) {
            $member_level = $request->get('member_level');
            $member_phone = $request->get('member_phone');
            $member_name = $request->get('member_name');
            $member_id = $request->get('member_id');

            if ($member_level) {
                $q->where('member_level', $member_level);
            }
            if ($member_phone) {
                $q->where('member_phone', $member_phone);
            }
            if ($member_name) {
                $q->where('member_name', $member_name);
            }
            if ($member_id) {
                $q->where('member_id', $member_id);
            }
    });
}
class Deposit extends Model
{
    public function user(){
        return $this->belongsTo(Member::class, 'user_id', 'id');
    }    
}

У пользователя есть класс Депозит.

В другом контроллере Я использовал функцию поиска, как показано ниже

User::search()->get()

Мой вопрос в том, что я хочу использовать search () в модели User в контроллере с моделью Deposit.

Deposit::whereHas('user',function($q) {
    condition from User::search().
})

есть любой способ сделать это? Поскольку я разрабатываю страницу администратора, есть много страниц поиска, которые повторяются для каждой страницы. Не могли бы вы поделиться своей идеей, есть ли способ лучше решить эту проблему.

1 Ответ

0 голосов
/ 28 мая 2020

Можете попробовать

class Deposit extends Model
{
    public function user(){
         return $this->belongsTo(Member::class, 'user_id', 'id');
    }

   public function searchUser(){
         return $this->user()->search();
    }   
}

И использовать

Deposit::whereHas('searchUser')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...