大家早上好, 我有4张桌子:
组织
用户
Organization_user
角色
因此,我想为用户获得他所拥有的所有组织。 我无法正确理解我应该使用Eloquent中的哪种关系...
谢谢您的回答。但是我仍然在阻止我的关系。 我想列出一个用户所拥有的角色的所有组织。 用户在每个组织中只能有一个角色。 这是我目前的恋情:
组织用户模型
public function update($id, Request $request)
{
$input = $request->all();
$product= \App\Product::find($id);
if (empty($product)) {
Flash::error('product not found');
return redirect(route('products.index'));
}
if ($request->hasFile('product_img')) {
$fileNameWithExt = $request->file('product_img')->getClientOriginalName();
$filename = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
$extension = $request->file('product_img')->getClientOriginalExtension();
$new_product_img = $filename . '_' . time() . '.' . $extension;
$path = $request->file('product_img')->move('images/products', $new_product_img);
Storage::delete('products/'.$product->product_img);
$input['product_img']= $new_product_img;
}
$product= $this->productRepository->update($input, $id);
Flash::success('product updated successfully.');
return redirect(route('products.index'));
}
用户模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Relations\Pivot;
class OrganizationUser extends Pivot
{
public function role()
{
return $this->belongsTo(Role::class);
}
}
我的控制器
public function organizations() {
return $this->belongsToMany(Organization::class)->using(OrganizationUser::class);
}
当前,我获得了数据透视表中包含的关系,但是没有获得“角色”表中包含的角色的“标签”,我仅获得了“ Organization_user”中包含的用户ID和组织ID桌子。
非常感谢您的帮助!
答案 0 :(得分:0)
尝试加入
$role = 'Your role id here';
$result = DB::table('Organization_user as ou')
->join('Organizations as o', 'o.id', '=', 'ou.organization_id')
->join('User as u', 'u.id', '=', 'ou.user_id')
->select('o.name', 'u.name as username')
->where('ou.role_id', $role)
->get();
答案 1 :(得分:0)
尝试关注
1)用户与组织有很多关系。
class User extends Model
{
public function organizations()
{
return $this->belongsToMany(Organization::class)->using(OrganizationUser::class);
}
}
2)您将需要在数据透视模型中添加角色关系。
class OrganizationUser extends \Illuminate\Database\Eloquent\Relations\Pivot
{
public function role()
{
return $this->belongsTo(Role::class);
}
}
这应该可以解决您的人际关系问题。
现在,您可以使用其organizations
和相关角色查询所有用户。