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

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

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

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

1453閲覧

Laravel の Eloquent で テーブルのリレーションを取得したい

ttakahashi2013

総合スコア26

Eloquent

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/09/04 02:21

laravel の eloquent で companies, jobs テーブルがあり、 1対多の関係がある場合は、Company.php内で、

php

1 public function jobs() 2 { 3 return $this->hasMany('App\Models\Job'); 4 } 5

という感じで呼び出して、
laravel の eloquent で applications, candidates テーブルがあり、 1対1の関係の場合は、Application.php内で

php

1 public function candidate() 2 { 3 return $this->hasOne('App\Models\Candidate'); 4 }

とEloquentの記述に従って呼び出しています。

メソッドに関し、動的な記述をするときに、
Company::jobが記述されているか、Company:: jobsが記述されているか
Application::candidateが記述されているか、Application::candidatesが記述されているか判断したいのですが、どう記述するのが簡潔になりますでしょうか。

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

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

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

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

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

masaya_ohashi

2017/09/04 04:33

やりたいことが把握しにくいのですが、動的に対象の変わるクラスに対し、特定のメソッドが定義されているかどうかを知りたい、ということでしょうか?
ttakahashi2013

2017/09/04 10:45

質問を見て、ご考慮くださりありがとうございました!
guest

回答1

0

ベストアンサー

メソッドが定義されているかに関してはmethod_existsを利用して以下のようにすると判断できます。
Mainクラスに、subsが定義されているかの例

dump(method_exists(\App\Main::class,"subs"));

メソッド名の規則に関してであれば、HasManyとBelongToManyは複数形、BelongToとHasOneは単数形になります。

投稿2017/09/04 10:12

aro10

総合スコア4106

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

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

ttakahashi2013

2017/09/04 10:42

laravel 風に if($model->$method instanceOf HasOne) { } や、instanceOf HasManyも考えたのですが、 method_exists の方が記述が簡略化されそうですね。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問