Neo Ighodaro
← SchreibenEN

Laravel

Dynamische Beziehungen in Laravel mit Eloquent-Macros

Eloquent-Macros sind eine elegante Möglichkeit, Laravel-Models zu erweitern. In diesem Beitrag definieren wir Beziehungen außerhalb der Model-Klasse.

Laravel-Eloquent-Macros sind eine hervorragende Möglichkeit, einige der Core-Klassen von Laravel zu erweitern. Mit Macros lässt sich ein Laravel-Model um Beziehungen ergänzen, die nicht direkt in der Model-Klasse selbst definiert sind.

Hier ist ein Beispiel, wie das funktioniert:

// Add to the boot() method of the AppServiceProvider
Builder::macro('warehouses', function () {
  return $this->getModel()->hasManyThrough(
    ShareholderWarehouse::class,
    City::class,
    'state_id',
    'city_id'
  );
});

Damit steht die warehouses-Beziehung in allen deinen Models zur Verfügung. Du kannst natürlich weitere Logik hinzufügen — aber dies ist bereits ein guter Ansatz, um Model-Beziehungen dynamisch zu ergänzen.