如何在Laravel中执行belongsTo()关系?

时间:2017-12-11 08:08:43

标签: php mysql laravel eloquent relational-database

这是我的模型User.php

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'name', 'email', 'password', 'cell_phone', 'province_id', 'city_id', 'job'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    public function city()
    {
        return $this->belongsTo('City');
    }
}

这是我的控制器的一部分:

$user_info = User::find(Auth::user()->id);
dd($user_info->city);

它抛出了这个:

  

“未定义的类常量'city'”

我该如何解决问题?

表格结构:

// users
+----+--------+---------+----------
| id |  name  | city_id | ...
+----+--------+---------+----------
| 1  | Jack   | 5       | ...

// city
+----+--------+
| id |  name  |
+----+--------+
| 1  | Tehran |

2 个答案:

答案 0 :(得分:2)

您需要传递完整的班级名称:

return $this->belongsTo('App\City');

或者:

return $this->belongsTo(City::class);

此外,您不需要这样做:

$user_info = User::find(Auth::user()->id);

由于Auth::user()已加载用户实例,因此您只需使用以下内容获取城市实例

Auth::user()->city

答案 1 :(得分:0)

基本上,您没有提供您的城市类名称的完整路径,这就是您所属的关系。关系不正常。

例如,您的代码必须是

CreateVIew

因为你的应用程序文件夹中有城市类模块和其他模块。