2017-06-22 52 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