我有一个新的 Laravel 5.8 应用程序。我开始使用 Eloquent ORM 及其关系。
我马上遇到了一个问题。
我有以下表格。(这只是一个示例,出于测试原因,不会成为实际应用程序)
Login table:
--------------------------
| id | user | data_id |
--------------------------
| 1 | admin | 1 |
| 2 | admin | 2 |
| 3 | admin | 3 |
--------------------------
Data table:
--------------
| id | ip_id |
--------------
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
--------------
IP table:
----------------------
| id | ip |
----------------------
| 1 | 192.168.1.1 |
| 2 | 192.168.1.2 |
| 3 | 192.168.1.3 |
----------------------
我想要的是获得属于实际登录的IP。
所以我添加了一个hasOne
关系,Login table
它有一个外键Data table
:
public function data()
{
return $this->hasOne('App\Models\Data');
}
然后我添加了一个具有外键的hasOne
关系:Data table
IP table
public function ip()
{
return $this->hasOne('App\Models\Ip');
}
完成后,我想检索登录表的第一条记录的 IP 地址:
Login::find(1)->data()->ip()->get();
但我得到这个错误:
Call to undefined method Illuminate\Database\Eloquent\Relations\HasOne::ip()
我在这里缺少什么,如何以正确的方式获取该登录的 IP?我需要一个belongsTo
地方吗?