Laravel-使用xyz之类的字符串定义关系而不是使用id

时间:2019-10-18 17:10:19

标签: laravel eloquent relationship

我有一个表,用于存储有关事件的信息。该事件具有位置属性(字符串)。现在,我有了一个表locations表,该表存储位置名称及其地址。

现在,我想从数据库中获取所有事件及其位置。

因为我从外部来源获得了所有事件,所以不能使用id来建立关系。

所以我需要的是一种像$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 :(得分:-1)

是的,有可能。但是您几乎不需要修改。所以让我们知道发生了什么

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

然后从您的控制器中调用

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