0

2つのテーブルとピボットテーブルがあります。表の構成は以下のとおりです。

users table:
id username password
1   admin    xyzasd

roles table:

id  name
1   role1
2   role2

role_user table:

id user_id role_id
1    1       1
2    1       2

私のユーザーモデル:

class User extends Basemodel{
    public static $table = 'users';
    public static $timestamps = true;

    public function roles()
    {
        return $this->has_many_and_belongs_to('Role');
    }

    public static function menu(){
        $roles = User::find(1)->roles()->get();
        return $roles;
    }
}

私のコントローラー:

public function get_index()
    {
        return View::make('home.index')
            ->with('title','testing many to many')
            ->with('menu',User::menu());
    }

ブレードビューファイルには、このステートメント{{$ menu}}があります。取得するのはメッセージ配列だけですが、レコードをフェッチする方法を教えてもらえますか?

4

2 に答える 2

3

まず、ユーザーは Eloquent を拡張する必要があります。また、ロールモデルを作成する必要があります。

//アプリケーション/モデル/User.php

class User extends Eloquent
{
    public static $table = 'users';
    public static $timestamps = true;

    public function roles()
    {
        return $this->has_many_and_belongs_to('Role');
    }
}

//アプリケーション/モデル/Role.php

class Role extends Eloquent
{
    public static $table = 'roles';
    public static $timestamps = true;

    public function users()
    {
        return $this->has_many_and_belongs_to('User');
    }
}

次に、コントローラーの場合、基本的にユーザーを渡すことができます。

public function get_index()
{
    $user = User::find(1);

    return View::make('home.index')
        ->with('title','testing many to many')
        ->with('user', $user);
}

次に、ビューで次のようなクールなことを行うことができます。

<h1>What's up {{ $user->username }}?</h1>
<h2>You have the following roles:</h2>
@foreach($user->roles as $role)
    <p>{{ $role->name }}</p>
@endforeach
于 2013-01-12T18:40:19.133 に答える
1

$menuビューで配列を反復処理する必要があります。

@foreach ($menu as $menu_item)
  {{ $menu_item->id }} # output ID of a record
@endforeach
于 2013-01-12T18:16:21.963 に答える