laravelブレードの結果:(他の列が含まれていない)へのアクセス階層型の関係は、私はこれらの構造を持つテーブルを持っている
am_user:
のuser_id - 主キー
ユーザ名
パスワード
am_projects:
PROJECT_ID - 主キー
PROJECT_NAME
am_user_project:
をPROJECT_ID
のuser_idマイユーザーモデルがありTHI sの関係:
class User extends Authenticatable
{
protected $table = 'am_user';
protected $primaryKey = 'user_id';
public function userproject()
{
return $this->hasMany('App\UserProject', 'user_id', 'user_id');
}
}
マイUserProjectは、この関係を持っています
class UserProject extends Model
{
protected $table = 'am_user_project';
protected $primaryKey = null;
public function user()
{
return $this->belongsTo('App\User', 'user_id', 'user_id');
}
public function project()
{
return $this->hasMany('App\Project', 'project_id', 'project_id');
}
}
マイプロジェクトは、この関係を持っています
class Project extends Model
{
protected $table = 'am_project';
protected $primaryKey = 'project_id';
public function userproject()
{
return $this->belongsTo('App\UserProject', 'project_id');
}
}
私がリストアップしたいのですがすべてのproject_names pe
public function index() {
$user = User::with(['userproject.project'])->find(Auth::id());
return view('projects', compact('user'));
}
をし、そのように刃でこれを投稿:
<div class="list-group">
@foreach($user->userproject as $userproject)
@foreach($userproject->project as $project)
<a href="#" class="list-group-item"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> {{ $project->project_name }}</span></a>
@endforeach
@endforeach
</div>
実際にこのような複数のforeachを回避する方法はあります私はこのことから得ることができ、認証されたユーザーに割り当てられたR・プロジェクト?
あなたは、App \ UserProjectのリレーションを削除し、ユーザーとプロジェクトの両方のモデルからApp \ UserProjectを指すすべてのリレーションを削除するとしますか? – Odinovsky
私はApp \ UserProjectモデルを取り除くことを意味します。それは必要ではありません。多対多の関係では、このテーブルのモデルではなく、 'am_user_project'テーブルだけが必要です。 – piscator
ありがとう!!これはうまくいきます...私は両方のモデルにディメンションテーブルの名前を指定して、App \ User内のprojects()リレーションに適切なフィールド名を追加するだけでした – Odinovsky