Einführung
Anpassung des Modells
namespace App\Models;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
/**
* @template TModel of \Illuminate\Database\Eloquent\Model
* @extends EloquentBuilder<TModel>
*/
class Builder extends EloquentBuilder
{
// Ihre benutzerdefinierten Methoden hier
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Erstellen eines neuen Eloquent Builders für das Modell.
*
* @param \Illuminate\Database\Query\Builder $query
* @return \App\Models\Builder
*/
public function newEloquentBuilder($query)
{
return new Builder($query);
}
}
namespace App\Models;
/**
* @template TModel of \Illuminate\Database\Eloquent\Model
* @extends \Illuminate\Database\Eloquent\Builder<TModel>
*/
class Builder extends \Illuminate\Database\Eloquent\Builder
{
/**
* Filtere aktive Benutzer.
*
* @return \App\Models\Builder<\App\Models\User>
*/
public function active()
{
return $this->where('status', 'active');
}
}
use App\Models\User;
$activeUsers = User::query()->active()->get();
Erweitern der Funktionalität
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
/**
* @template TModel of Model
* @extends \Illuminate\Database\Eloquent\Builder<TModel>
*/
class Builder extends \Illuminate\Database\Eloquent\Builder
{
/**
* @return \App\Models\Builder<User>
*/
public function active()
{
return $this->where('status', 'active');
}
}
Kommentare 0
Noch keine Kommentare. Seien Sie der Erste!