Искать в 2 модели в Laravel - PullRequest
       35

Искать в 2 модели в Laravel

1 голос
/ 29 сентября 2019

У меня 2 модели: city и hotel.И они имеют отношение 1 к n.Я хочу, чтобы мой пользователь мог выполнять поиск в обеих моделях одновременно.

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

Я хочу искать в 2 моделях, чтобы увидеть любое сходство и вернуть данные, например, если пользователь вводит слово

N

Я хочу вернуть объект 2 1в отеле и 1 в городе:

New York

и

Hotel navara 

Вот мои определенные отношения в моделях:

 public function city()
    {
        return $this->hasOne(City::class, 'id', 'city_id');
    }

И в моей модели города:

 public function hotel(){
        return $this->hasMany(Hotel::class);
    }

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

Вы можете использовать orWhere вот так

$result = City::orWhereHas('hotel', function (Builder $query) use($request) {
    $query->where('name', 'like', '%' . $request->name . '%');
})->orWhere('name', 'like', '%' . $request->name . '%')->get();

надеюсь, это поможет.

Спасибо

0 голосов
/ 29 сентября 2019

Попробуйте и дайте мне знать, что происходит Hotel.php

public function city()
   {
        return $this->belongsTo(City::class, 'id', 'city_id');
    }

City.php

public function hotel()
    {
        return $this->hasMany(City::class, 'id', 'city_id');
    }

В контроллере

$city= City::find(1);

$hotels = $city->hotel;

dd($hotels);

Если этоне работает, дайте мне посмотреть дд () .. я присоединяюсь, это помогает

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