Laravel - Определите отношения со строкой, как xyz, вместо использования id - PullRequest
1 голос
/ 18 октября 2019

У меня есть таблица, в которой хранится информация о событии. Событие имеет атрибут местоположения (String). Теперь у меня есть таблица locations, в которой хранятся имена местоположений вместе с их адресом.

Теперь я хочу получить все события из базы данных вместе с их местоположением.

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

Так что мне нужны отношения, которые работают примерно как $this->hasOne('Location')->where('name','LIKE','%location_name%');

Возможно ли что-то подобное? Если нет, то что было бы лучше всего для достижения чего-то подобного, поэтому я получаю вывод JSON, подобный этому:

 {
    "name":"Event Abc",
    "date":"2019-10-18 12:00:00",
    "location":"Location X",
    "location_details": {
        "name":"Location X",
        "address":"Street XYZ"
    }
 }

Спасибо

1 Ответ

0 голосов
/ 18 октября 2019

Да, это возможно. Но вам нужно немного модифицировать. Итак, давайте попробуем и дайте мне знать, что произошло

function location () {
       return $this->hasOne('App\Location')->where('name','LIKE','%location_name%')->get();
    }

, а затем позвоните с вашего контроллера

    $eventsWithlocation = Event::with('location')->first();
      dd($eventsWithlocation);
...