追加のピボットテーブルカラムの値を取得する laravel
2023-08-25 14:49:47
質問
phone_models、phone_problems、および phone_model_phone_problem のピボット・テーブルがあります。ピボット・テーブルには、追加の列 'price' があります。
PhoneModelです。
class PhoneModel extends \Eloquent
{
public function problems()
{
return $this->belongsToMany('RL\Phones\Entities\PhoneProblem')->withPivot('price');
}
}
PhoneProblemです。
class PhoneProblem extends \Eloquent
{
public function models()
{
return $this->belongsToMany('PhoneModel')->withPivot('price');
}
}
私がしようとしているのは、特定の問題を抱えた特定の携帯電話の価格を取得することです。
これは私が今持っている方法ですが、私はLaravelがもっとシンプルな方法でこれを行うために見つけることができないEloquentの機能を内蔵しているような気がします。
$model = $this->phoneService->getModelFromSlug($model_slug);
$problem = $this->phoneService->getProblemFromSlug($problem_slug);
は、特定のモデルと問題をそのスラッグから選択するだけです。
それから、私が行うことは、これらの資格情報を使って、このように価格を得ることです。
$row = DB::table('phone_model_phone_problem')
->where('phone_model_id', '=', $model->id)
->where('phone_problem', '=', $problem->id)
->first();
ということで、次のように価格を取得することができます。
$row->price
しかし、これを行うにはもっと簡単で「Laravel」的な方法が必要だと感じています。
どのように解決するのですか?
EloquentでMany to Manyリレーションを使用する場合、結果のモデルには自動的に
pivot
属性が割り当てられます。その属性を通じて、ピボット・テーブルの列にアクセスすることができます。
ただし、デフォルトでは、ピボット・オブジェクトにはキーしかありません。列もそこに含めるには、リレーションシップを定義するときに列を指定する必要があります。
return $this->belongsToMany('Role')->withPivot('foo', 'bar');
Eloquentとの関係を設定する作業にもっと助けが必要な場合は、私に知らせてください。
Edit
価格を問い合わせるには、次のようにします。
$model->problems()->where('phone_problem', $problem->id)->first()->pivot->price
関連
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み] 警告:mysqli_fetch_array()は、パラメータ1がmysqli_resultであることを期待する、オブジェクトはで指定された。
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
thinkphp5 timestamp 非整形の数値に遭遇した。
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
-
[解決済み】Laravel 不明なカラム「updated_at」。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み】Phpのincludeが機能しない? 関数がincludeされない
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み] PHP 未定義関数への呼び出し