質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

ORM

ORM(オブジェクト関係マッピング)はオブジェクト指向のシステムとリレーショナルデータベースの間でマッピングを行う技術です。

Eloquent

Eloquentとは、PHPフレームワークのLaravelに最初から含まれているORM(Object-relational mapping:オブジェクト関係マッピング)です。

Q&A

解決済

1回答

2357閲覧

Laravel4:Eloquentで関係データベースのフィルタリングについて。

a4313

総合スコア9

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

ORM

ORM(オブジェクト関係マッピング)はオブジェクト指向のシステムとリレーショナルデータベースの間でマッピングを行う技術です。

Eloquent

Eloquentとは、PHPフレームワークのLaravelに最初から含まれているORM(Object-relational mapping:オブジェクト関係マッピング)です。

0グッド

0クリップ

投稿2014/11/10 17:47

LaravelのEloquent ORMで関係モデルを使って全ての結果にフィルタリングすることは可能でしょうか?

lang

1SELECT * FROM users JOIN books on users.id = books.user_id WHERE books.cover_type = 'hard';

試してみて内で最も近いEloquentの書き方は以下です。

lang

1$tickets = User::with(array('books' => function($q) { 2 return $q->where('cover_type', '=', 'head'); 3}))->get(); 4

上記はusersを全て取得し、booksのwhere句に合えばそれもつけて返します。本当はbookで全ての結果をフィルタリングしたいです。
Eloquentでやる理由は、戻り値が入れ子オブジェクトでの想定だからです。分かる方いらっしゃいますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記のようなのはどうでしょう?

lang

1$book_id = Book::where('cover_type','=', 'head')->list('id'); 2$users = User::with('book')->whereIn('Book.id', $book_id)->get();

あとは下記のようにbookが主体で定義すればできるかと思いますよ。

lang

1$statusTickets = Book::with('users')->where('cover_type', '=', 'head')->get();

投稿2014/11/11 08:22

arrhp

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問