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

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

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

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

PHP

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

Eloquent

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

Q&A

解決済

1回答

3868閲覧

Laravel6.xで一つのモデルから2つのテーブルを結合したデータを返すようにしたい。

dai_00

総合スコア2

Laravel

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

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

PHP

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

Eloquent

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

0グッド

0クリップ

投稿2021/05/07 01:03

編集2021/05/07 01:09

Laravel6.x

2つのテーブルが結合されたモデルを作りたいです。

A_Bは多くのA_Cを持つ
A_Bモデル -> A_Bテーブル
A_Cモデル -> A_Cテーブル

実現したいもの
Aモデル -> A_Bテーブル + A_Cテーブル

試したこと

class A extends Model { protected $table = 'A_B'; public function newQuery(){ $query = parent::newQuery(); $query = $query->join('A_B')->on('A_B.id', =, 'A_C.foreign_id'); return $query } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

一番単純に目的を果たしたいなら、Modelを使わずともクエリビルダを使えば簡単に複数テーブルをまたいでのjoinはできます。
参考)
https://biz.addisteria.com/query_builder/

Model、Eloquentを利用したいということであれば、質問文のjoinの内容があまり詳しく書かれていないのである程度想像で答えますが、単純なリレーションとかであればhasoneやhasmany、belongsToなどを使えばいいと思います。
参考)
https://qiita.com/zaburo/items/d665804f8ea850502c64

Eloquentを使いつつ、リレーションやjoin頼らずに複数のテーブルを参照したいのであればリポジトリパターンを使うといいと思います。
参考)
https://www.ritolab.com/entry/165

投稿2021/05/07 01:29

AbeTakashi

総合スコア4853

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

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

dai_00

2021/05/07 01:49

回答ありがとうございます。 モデル::get()にみで、2つの結合されたテーブルデータを取得するようにしたく、 下記ページのようなイメージかもしれません。 https://teratail.com/questions/1676 その場合、1つめと2つめの方法では実現できませんか? リポジトリパターンを使用するのが良いのでしょうか
AbeTakashi

2021/05/07 02:24

過去のteratailの内容を見ましたが、このようなトリッキーな手法ははじめて見ましたw ただこれもModelとテーブルは1対1ですよね(動的に切り替えてるだけ)。 むしろお望みのことはこっちの方が近いかもしれません。 https://qiita.com/nunulk/items/54c2f34b0e4d4069c76c 個人的にはあまりすっきりしないし、リポジトリパターンの方が可読性や保守性は高そうに思えますけど。
dai_00

2021/05/07 03:02

ありがとうございます。リポジトリパターンで試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問