2016-08-22 58 views
0

此前,我曾与bog标准PHP一起工作过,最近他们转向Laravel。我无法理解的一件事是Laravel Eloquent中的SQL查询。在Laravel中了解口才

例如我有一个角色和一个用户表。角色表包含​​角色和每个角色的ID。用户表包含各种用户详细信息以及role_id以引用用户的角色

我在我的用户模型试图

public function role() 
{ 
    // return $this->hasOne('App\Phone', 'foreign_key', 'local_key'); 
    return $this->hasOne('App\Role', 'id', 'role_id'); 
} 

我在我的榜样试图

public function users() 
{ 
    return $this->hasMany('App\User', 'role_id', 'id'); 
} 

然后在我的控制器

public function index() 
{ 
    $var = User::find()->role->get(); 

    return view('article', 
     array(
     'var' => $var 
     )); 
} 

但是现在如何像在普通PHP中一样访问这两个表中的字段呢?我宁愿使用标准的SQL,但我正在努力学习这个框架。

有什么建议吗?

+1

改变'hasOne尝试它( '应用程序\角色', 'ROLE_ID', 'ID');',但事实上,你可以只ommit键和雄辩会在你的情况下对他们进行猜测。 –

+0

告诉我角色和用户之间想要什么关系(1-1,1-n,n-n)。我会给你一个例子 – KmasterYC

+0

我会用'belongsTo('App \ Role')'作为'role()'关系。 这是在_many_一侧建模一对多关系的方式。 –

回答

0

您可以通过雄辩的模型属性访问表格字段。

如果有像name领域,email你可以像

$user = User::find(1); 

$name = $user->name; 
$email = $user->email; 

$roleName = $user->role->name; 

注意,你真的没有叫上关系get()方法获取它们。访问它会自动调用它。

Laravel文档在这个问题上很有帮助。 Laravel 5.2 Eloquent: Getting StartedLaravel 5.2 Eloquent: Relationships

0

与预先加载

$var = User::with('role')->find($userId)->get(); 
+0

如果我这样做,然后使用foreach循环,如果我有同名的列,它是如何区分这两个? –