2017-06-22 50 views
0

我试图在Laravel中连接两个模型中的一个默认用户模型和另一个地址模型,但我在连接这两个模型时遇到了一些问题。如何在Laravel中连接用户和地址模型

用户模型是

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 
use Illuminate\Database\Eloquent\Model; 
use App\Address; 

class User extends Authenticatable 
{ 
    use Notifiable; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 

    public function address() 
    { 
     return $this->hasOne('App\Address'); 
    } 
} 

和地址型号是

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use App\User; 
use Session; 

class Address extends Model 
{ 
    protected $table = 'usercontacts'; 
    public function address() 
    { 
     return $this->belongsTo('App\User'); 
    } 
} 

请问这个正常工作?任何提示都会有所帮助。在此先感谢

+0

良好的起点,https://laravel.com/docs/5.4/eloquent-relationships –

回答

0

首先,根据您定义关系的方式,您的usercontacts的表中有一列叫做user_id

如果不是,您将需要一个。或者,如果您使用其他特定的外键(例如belongs_to_user_id),则必须将其指定为hasOne关系中的第二个参数。例如。

// User.php 
return $this->hasOne('App\Address', 'belongs_to_user_id'); 

您可以分享您收到的错误消息吗?

+0

Usercontacts表具有user_id,但没有值返回到该列,我有另一个职位和类别的关系,它工作正常。我认为问题在于用户模型扩展了Authenticatable而不是Model – Santosraj