
Laravel での関連モデルの存在の確認
Laravel では、Eloquent モデルはデータベース エンティティを表し、それらのエンティティ間の関係を管理するための便利な方法を提供します。ただし、リレーションシップを操作する場合、さらなる操作を実行する前に関連モデルが存在するかどうかを確認する必要がある場合があります。
次のコードを考えてみましょう。
<code class="php">public function option() {
return $this->hasOne('RepairOption', 'repair_item_id');
}
public function setOptionArrayAttribute($values)
{
$this->option->update($values);
}</code>このシナリオでは、別のモデルと 1 対 1 の関係を持つモデル。このモデルを作成または更新するときは、関連するモデルが存在するかどうかを確認して、更新するか作成するかを決定する必要があります。
解決策 1 (Laravel 7.2 ):
Laravel 7.2 以降では、リレーション オブジェクトでexists() メソッドを使用して、関連モデルが存在するかどうかを確認できます:
<code class="php">$model = RepairItem::find($id);
if (Input::has('option')) {
if ($model->option()->exists()) {
// Option exists, update it
} else {
// Option does not exist, create it
}
}</code>解決策 2 (Laravel 7.2 より前):
Laravel 7.2 より前のバージョンでは、リレーション オブジェクトで count() メソッドを使用して、関連モデルが存在するかどうかを確認できます:
<code class="php">if (count($model->option)) {
// Option exists
} else {
// Option does not exist
}</code>注:このメソッドは、リレーションが単一値リレーション (たとえば、hasOne、belongsTo) である場合にのみ機能します。多対多またはその他のコレクションベースのリレーションシップの場合、リレーションのコレクションに対して count() や isNotEmpty() などのメソッドを使用して、関連モデルが含まれているかどうかを確認できます。
以上がLaravelに関連モデルが存在するかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。