0

これはちょっと複雑ですが、何でも..わかりました、4つのテーブルがあります

1-Projects 

 id     | int 11
 name 
2-Sections

 id         | int 11
 project_id | int 11
 name
3-Users

 id         | int 11

4-User_Section_project (this table is used to assign users to sections they will work on in the project

id         | int 11
project_id | int 11
section_id | int 11
user_id    | int 11

とにかくORMを使用してそのようなものを機能させ、割り当てられたセクションのみを取得することはありますか

$sections = $user->projects()->sections()

User モデルで次のコードを使用して作成しました

 public function workshops()
{


    return $this->belongsToMany('section', 'user_project_section', 'user_id', 'section_id')->whereIn('user_project_section.project_id', array(1,2,3));
}

そして、私はそれをそのように呼びます

@foreach ( $user->sections as $section)
                    {{$section->name}}

                @endforeach

このコードは、プロジェクト 1、2、3 のユーザーに関連付けられたセクションを取得します。指定したプロジェクト用に作成したい場合は、パラメーターを渡します。問題は、ビューで関数の呼び出しに括弧 () を追加すると機能しないため、パラメーターを渡すことができないことです

@foreach ( $user->sections() as $section)
                    {{$section->name}}

                @endforeach

さらに悪いことに、エラー メッセージがポップアップ表示されず、Mysql Server クエリが監視されていません。これはまったくクエリ (実行) されていません。私は本当にパラメータを渡す必要があります 詳細情報 : Print_r を使用すると、 () なしで Collection Object が返され、それを使用すると BelongsToMany Object が返されるように見えます。

4

1 に答える 1

0

あなたの質問に答えるには、はい。誰かが実際にあなたのためにすべてのコードを書いてここに置くつもりですか? おそらくそうではありません。ORM の使用に興味がある場合は、読んで使用できるドキュメントを備えた高品質の ORM がいくつかあると確信しています。

ORM は、データベースを扱うためのオブジェクト指向のアプローチにすぎません。テーブルをテーブルのように扱うのではなく、テーブルをオブジェクトのように扱い、そのようにテーブルを操作して、コードの再利用とコードの相互作用の力を貸します。ただし、ORM を使用することのトレードオフは、一般にオーバーヘッドです。それが、多くの小さなプロジェクトがそれを使用しない理由です - 彼らが必要とするものには多すぎます.

于 2013-07-15T19:33:45.720 に答える