我在Laravel 4.2中对Eloquent有一点问题...首先抱歉桌面命名。
有三个表格:
这些表有一个映射表:
现在我正在尝试显示具有特定"区域"的所有用户。和所属的" AccessRights"。因此,我已经指定了我的模型:
User.php
class User extends Eloquent implements UserInterace, RemindableInterface {
use UserTrait, RemindableTrait;
protected $table = 'Users';
protected $primaryKey = 'Id';
public $timestamps = false;
protected $hidden = array('password', 'remember_token');
public function securityAreas() {
return $this->belongsToMany('SecurityAreas', 'SecurityMappings', 'UsersId', 'SecurityAreasId' );
}
public function securityAccessRights() {
return $this->belongsToMany('SecurityAccessRights', 'SecurityMappings', 'UsersId', 'SecurityAccessRightsId' , 'SecurityAreasId' );
}
}
在我的UserController.php中,我试图获得用户。
$oUsers = User::with('securityAreas')->with('securityAccessRights')->get();
现在Eloquent加载了Userobject的所有信息...在我的视图中我想显示用户名区域和所有权。 因为属于"区域"和#34; AccessRights"我两次得到相同的区域......但是我想为每个拥有成熟权利的用户显示一次。 例如: Visual Example
所以我的问题是如何选择"用户"与他所属的独特区域与属于" AccessRights"?是否有任何功能或可能在控制器上对结果进行排序?或者我的Usermodel有什么错误,我可以以任何可能的方式限制吗?
我有点困惑......
非常感谢任何帮助。
答案 0 :(得分:0)
我使用了多维数组
UserController.php
$oUsers = User::with('securityAreas')->with('securityAccessRights')->get();
foreach($oUsers as $oUser) {
$arrUser = array();
$arrUser['id'] = $oUser->Id;
$arrUser['Name'] = $oUser->Name;
$arrUser['EMail'] = $oUser->EMail;
$arrUser['ADUser'] = $oUser->Username;
$arrUser['UserIdent'] = $oUser->Identification;
$arrUser['SecurityAreas'] = array();
$iCount = 0;
foreach($oUser->securityAreas as $oArea) {
if(!array_key_exists($oArea->Identification, $arrUser['SecurityAreas'])) {
$arrUser['SecurityAreas'][$oArea->Identification] = array();
}
$arrUser['SecurityAreas'][$oArea->Identification][] = $oUser->securityAccessRights[$iCount]->Identification;
$iCount++;
}
$arrReturn[] = $arrUser;
}
示例输出
Array ( [0] => Array (
[Name] => User, My
[EMail] =>
[Username] => MyUser
[UserIdent] => 000000
[SecurityAreas] => Array (
[Area1] => Array (
[0] => read
[1] => write )
[Area2] => Array (
[0] => read )
)
)
)
有了这个,我可以在视图中使用不同的foreach循环来为每个用户输出正确范围内的值 - 区域 - 右。
我认为我的模型中的关系不正确,并且有更好的方法来获得这些结果。
我希望这对你也有帮助。
无论如何,如果有人知道更好或其他方式我会很高兴知道它。