简体   繁体   中英

How can I do a belongsTo() relation in Laravel?

Here is my model 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');
    }
}

And here is a part of my controller:

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

And it throws this:

"Undefined class constant 'city'"

How can I fix the problem?


Tables structure:

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

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

You need to pass full class name:

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

Or:

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

Also, you don't need to do that:

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

Because Auth::user() already has user instance loaded, you can just get city instance with:

Auth::user()->city

Basically , you don't provide full path of your class name of city that's why you belongs To relation not working properly.

for example your code must be

return $this->belongs To('App/City');

Because your in app folder you have city class module and others.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM