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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

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

Eloquent

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

意見交換

クローズ

1回答

1193閲覧

Laravelで複合キーがあるテーブルの実装

tomoyuki123

総合スコア273

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

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

Eloquent

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

0グッド

0クリップ

投稿2023/09/20 01:48

0

0

テーマ、知りたいこと

Laravelのeloquentは複合キーをサポートしていないと思います。
複合キーを使わないといけない場合はどのように実装すべきか知りたいです。
https://github.com/laravel/ideas/issues/1699

背景、状況

  • データベースは既存のものでアプリだけlaravelに置き換えたい
  • テーブルは複合キーを使ってるものが複数ある
  • できる限りeloqunetを使って実装したい

環境

  • PHP8.2
  • Laravel10
  • MySQL8.0です。

対応方法

  1. クエリビルダを使う(eloquentは諦める)
  2. サードパーティのライブラリを使う(これとかこれとか)
  3. テーブル設計を見直す

自分の中での結論

1のクエリビルダを使うしかないのかなと自分では思っています。

理由は2についてはできる限りモデル周りにはサードパーティは使いたくないと思っていて、3のテーブル設計を見直すのはeloquentを使うためだけにそうするのは非現実的だと思っています。

ご相談

皆様はどのように実装されるかご意見が欲しいです🙇‍♂️

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

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

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

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

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

回答1

#1

niiyz

総合スコア131

投稿2023/09/21 00:26

テーブル設計を見直す

私は見直します。
理由はメンテナンス性です。
将来自分以外の人が触ることが確定的ならid追加します。
削除、更新するときにパラメータでキー2つを持ち回すのが面倒。
Laravelがスタンダードになった今、「eloquentを使うためだけ」を軽く見ないほうがいいと思います。

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

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

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問