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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1935閲覧

[Laravel] Eloquentで簡単に結果を取得したい

techtech

総合スコア8

Laravel 4

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2014/11/08 23:07

Laravelでユーザからの問い合わせ管理システムを作っています。
モデルは下記のようなリレーションを設定しています。

lang

1Client.php 2function Inquiry() { 3 return $this->hasMany('Inquiry'); 4} 5 6Inquiry.php 7function InquiryDetail() { 8 return $this->hasMany('InquiryDetail'); 9} 10

InquiryDetailの中に商品番号(product_no)があるのですが、
このときに特定のクライアントに対して、特定の商品番号についての
問い合わせがあったかどうかを知りたいです。

lang

1Client::find($client_id)->Inquiry()->InquiryDetail()->where('product_no', $product_no)->count()

現在は以上のように取得しているのですが、複数回の問い合わせがあった場合は複数行返ってきてしまいます。
もっとシンプルな方法はないのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

Eloquentだとこれ以上単純化するのは難しそうです。
せいぜい下記ではないでしょうか。

lang

1public function hasClientInquiry($Client_id,$product_no) { 2 3 $inquiries = Inquiry::with('InquiryDetail')->where('client_id','=',$client_id)->get(); 4 foreach( $inquiries as $inquiry ) { 5 $details = $Inquiry->InquiryDetail()->where('product_no', '=', $product_no)->count(); 6 if ( $details > 0 ){ 7 return true; 8 } 9 } 10 return false; 11}

あとはFluentで直接SQLを書いてしまうかではないでしょうか。

投稿2014/11/09 05:23

rainymonday

総合スコア67

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問