[解決済み] Laravel 関連するモデルが存在するかどうかをチェックする
2022-05-06 12:27:33
質問
Eloquentのモデルで、関連するモデルを持っています。
public function option() {
return $this->hasOne('RepairOption', 'repair_item_id');
}
public function setOptionArrayAttribute($values)
{
$this->option->update($values);
}
モデルを作成したとき、必ずしも関連するモデルがあるとは限りません。更新するときに、オプションを追加することもあるし、しないこともある。
そこで、関連するモデルが存在するかどうかをチェックして、それぞれ更新するか、作成する必要があるんだ。
$model = RepairItem::find($id);
if (Input::has('option')) {
if (<related_model_exists>) {
$option = new RepairOption(Input::get('option'));
$option->repairItem()->associate($model);
$option->save();
$model->fill(Input::except('option');
} else {
$model->update(Input::all());
}
};
ここで
<related_model_exists>
は、私が探しているコードです。
どのように解決するのですか?
で
php 7.2+
を使用することはできません。
count
はリレーションオブジェクトの上に置かれるので、 すべてのリレーションに対応する万能の方法はありません。そのため、すべてのリレーションに対応できる万能な方法はありません。
$model->relation()->exists()
すべてのリレーションタイプで動作する汎用的なソリューション ( php 7.2以前 ):
if (count($model->relation))
{
// exists
}
ダイナミックプロパティが返すので、これはすべてのリレーションに対して機能します。
Model
または
Collection
. どちらも実装
ArrayAccess
.
つまり、こんな感じです。
シングルリレーション
hasOne
/
belongsTo
/
morphTo
/
morphOne
// no related model
$model->relation; // null
count($model->relation); // 0 evaluates to false
// there is one
$model->relation; // Eloquent Model
count($model->relation); // 1 evaluates to true
対多の関係。
hasMany
/
belongsToMany
/
morphMany
/
morphToMany
/
morphedByMany
// no related collection
$model->relation; // Collection with 0 items evaluates to true
count($model->relation); // 0 evaluates to false
// there are related models
$model->relation; // Collection with 1 or more items, evaluates to true as well
count($model->relation); // int > 0 that evaluates to true
関連
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて
-
[解決済み] ある文字列が特定の単語を含んでいるかどうかを確認するにはどうすればよいですか?
-
[解決済み] Laravelでカスタムヘルパー関数を作成する方法
-
[解決済み] Laravel Eloquentを使用して複数のWhere句クエリを作成する方法?
-
[解決済み] LaravelはMcrypt PHPエクステンションを必要とします
-
[解決済み] Laravelで特定のマイグレーションをロールバックする
-
[解決済み] Laravel レコードが存在するかどうかをチェックする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
[解決済み】/var/www/htmlとは何ですか?[クローズド]
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み] libapache2-mod-php7 パッケージの場所がわからない
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。