mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 01:57:13 +00:00
When the related model uses SoftDeletes, `isRelationNullable()` was forcing the BelongsTo relation type to nullable even if the relation explicitly opted into trashed parents via `->withTrashed()`. Combined with a NOT NULL FK column and DB-level FK constraint, the relation is effectively non-nullable. The SoftDeletes branch is now skipped when the relation has removed the `SoftDeletingScope` and added no constraint on the qualified `deleted_at` column. `->onlyTrashed()` and `->withoutTrashed()` keep their nullable annotation because they restrict the parent to a specific soft-delete state. Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
50 lines
1.5 KiB
PHP
50 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\SoftDeletesRelations\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasOne;
|
|
|
|
class ModelWithRelations extends Model
|
|
{
|
|
protected $table = 'models_with_relations';
|
|
|
|
public function softDeletable(): BelongsTo
|
|
{
|
|
return $this->belongsTo(SoftDeletableModel::class, 'soft_deletable_model_id');
|
|
}
|
|
|
|
public function softDeletableWithTrashed(): BelongsTo
|
|
{
|
|
return $this->belongsTo(SoftDeletableModel::class, 'soft_deletable_model_id')->withTrashed();
|
|
}
|
|
|
|
public function softDeletableOnlyTrashed(): BelongsTo
|
|
{
|
|
return $this->belongsTo(SoftDeletableModel::class, 'soft_deletable_model_id')->onlyTrashed();
|
|
}
|
|
|
|
public function softDeletableWithoutTrashed(): BelongsTo
|
|
{
|
|
return $this->belongsTo(SoftDeletableModel::class, 'soft_deletable_model_id')->withoutTrashed();
|
|
}
|
|
|
|
public function nonSoftDeletable(): BelongsTo
|
|
{
|
|
return $this->belongsTo(NonSoftDeletableModel::class, 'non_soft_deletable_model_id');
|
|
}
|
|
|
|
public function softDeletableHasOne(): HasOne
|
|
{
|
|
return $this->hasOne(SoftDeletableModel::class, 'model_with_relations_id');
|
|
}
|
|
|
|
public function nonSoftDeletableHasOne(): HasOne
|
|
{
|
|
return $this->hasOne(NonSoftDeletableModel::class, 'model_with_relations_id');
|
|
}
|
|
}
|