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

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

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

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

PHP

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

Q&A

解決済

1回答

1008閲覧

laravelのeloquentで質問です。

m.kk

総合スコア23

Laravel

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

PHP

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

0グッド

0クリップ

投稿2020/09/07 15:15

編集2020/09/10 03:13

お世話になります。

質問内容
子が多 親が一の関係
子テーブルのデータが紐づいている親テーブルのデータを一回ずつ取得したい。

現状
子テーブルのデータの数だけ親が取得されてしまう。(親が重複して取得される)

此方がコードです。

Model public function getAllAnimal($animal_id) { return $this->where('animals.id', $animal_id) ->join('cats', 'animals.id', '=','animal_id') ->select('animals.*', 'cats.updated_at') ->orderBy('cats.updated_at', 'DESC')->get(); }

今は暫定で->get()にしています。
やっている事は
ここ見ながら
https://readouble.com/laravel/7.x/ja/eloquent.html
もっとwhereで条件を絞るのか
質問の条件に合うヘルパーメソッドを探しています。

よろしくお願いします。

animal table <?php class CreateAnimalsTable extends Migration { public function up() { Schema::create('animals', function (Blueprint $table) { $table->increments('id'); $table->string('animal_image')->comment('画像'); $table->string('name'); $table->string('kinds'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('animals'); } }
cats table <?php class CreateCatsTable extends Migration { public function up() { Schema::create('cats', function (Blueprint $table) { $table->increments('id'); $table->unsignedInteger('user_id')->unsigned()->comment('ユーザーID'); $table->unsignedInteger('animal_id'); $table->string('cats_image')->comment('画像'); $table->string('cats_name'); $table->timestamps(); $table->index('id'); $table->index('user_id'); $table->index('animal_id'); $table->foreign('user_id')->references('id')->on('users')->onDelete('set null')->onUpdate('cascade'); $table->foreign('animal_id')->references('id')->on('animals'); }); } public function down() { Schema::dropIfExists('cats'); } }

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

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

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

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

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

yuki84web

2020/09/08 14:46

「一回ずつ」という表現から、期待するデータの構造がイメージしにくいのですが、もう少し具体的に書くことは出来ますでしょうか。
m.kk

2020/09/09 00:27

ご返信ありがとうございます。 親テーブルの値、それに紐づく子テーブルの値があります。 取りたい値は子の値が存在する親の値のみ。 現在は子の値分だけ親の値も重複して取り出してしまう。 例えば、同じ親の値から紐づく子の値が3つあると、同じ親の値が3つ取れてしまう。 ここで「一回ずつ」というのは一度その親データが取得できたらそれ以降の重複した親データは無視するということです。 説明がわかりづらければ、教えていただければ幸いです。
kai0310

2020/09/10 02:25

DB構造が分かる様にマイグレーションファイルの提示を行なってください。
m.kk

2020/09/10 03:13

マイグレーションファイルの提示を行いました。 よろしくお願いします。
m.kk

2020/09/10 22:56

どなたかご回答お待ちしております!
phper.k

2020/09/11 05:05 編集

コード見る限り、いわゆる「青本」で勉強してる感じですかね?
m.kk

2020/09/11 05:23

いえ! 本では勉強しておりません。 ネットでどうにか重複は無視出来るやり方はないものか探しています。
phper.k

2020/09/11 05:28

Laravel のというより、MVCフレームワークの基礎知識が足りていないなと感じます。 質問の件、回答するには @m.kk さんがどれくらいWEBアプリケーションの知識があるのかにかかっていると思います。
m.kk

2020/09/11 08:31

わかりました。 もう一度、白紙にしてから書き直してみます。
m.kk

2020/09/13 06:46

うまくいかないですね。 紐づいた親テーブルは1件ずつ取得したいのですが重複しますね。
phper.k

2020/09/13 06:57 編集

それは質問ですか?
m.kk

2020/09/14 05:35

いったーー!!! SQL直書きでいけました!
guest

回答1

0

自己解決

sqlのバージョンエラーを回避とDB直書きでなんとか!

投稿2020/09/14 05:36

m.kk

総合スコア23

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問