2016-04-13 2 views
0

У меня есть два стола с именем пользователей и профиль. В профиль стол столбец с именем userID.Now я хочу это userID столбец принимает значение от пользователей table's id. Я проработал связь с базами данных. Но не могу получить данные с view.I искали, но у меня нет нашел удовлетворительный ответ по моей проблеме.Как получить идентификатор пользователя из таблицы пользователей?

Кстати я новичок в Laravel.I пытались до сих пор

Модель пользователя:

class User extends Authenticatable 
{ 
    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $table ="users"; 
    protected $fillable = [ 
     'userName', 'email', 'password', 
    ]; 

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

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

Профиль Модель:

class Profile extends Model 
{ 
    // 
    protected $table = "profiles"; 
    public $fillable = ["firstName","lastName","middleName","DOB","gender","featuredProfile","email","phone","summary","profilePic"]; 

    public function user(){ 
     return $this->belongsTo('App\User'); 
    } 
} 

И я пытаюсь получить userID с {{$profile->userID}}. Я действительно не знаю, где находится pr облем и как это сделать?

ответ

2

вам нужно будет сказать Laravel, чтобы получить модель отношений как этого

$profile = Profile::find(1); 
$userID = $profile->user->id; 

редактирование: от модели docs

автоматически предполагаются иметь user_id внешнего ключа.

в вашем случае это userId так изменить hasOne и belongsTo методы сказать Laravel имя foreign_key вы используете

public function profile() 
{ 
    return $this->hasOne('App\Profile', 'userId'); 
} 

public function user() 
{ 
    return $this->belongsTo('App\User', 'userId'); 
} 
+0

Его сообщение об ошибке «Попытка получить свойство не-объекта». –

+0

'$ profile-> user-> id;' потому что столбец db таблицы 'user' является' id', а не 'Userid' – Junaid

0

Пожалуйста, добавьте идентификатор_пользователя в нефтеналивной массив профилей.

Пожалуйста, проверьте код образца, чтобы сделать то же самое.

public $fillable = ["firstName","lastName","middleName","DOB","gender","featuredProfile","email","phone","summary","profilePic","userID"]; 
+0

Это необязательно. У него даже есть риски для безопасности. Поскольку он использует что-то еще, кроме user_id, он просто должен сказать laravel, что такое имя id в таблице users. – Christophvh

Смежные вопросы