Wie findet Laravel mehrere Modelle?

Lesezeit: 2 Minuten

almos Benutzeravatar
fast

Wenn ich ein Modell “Dog” habe, wird Laravel es mit der Tabelle “Dogs” verknüpfen. Immer der Plural. Wenn ich nun ein Modell “Person” habe, versucht es, die Tabelle “People” zu finden – auch den Plural. Aber woher kennt Laravel den Plural, wenn es mehr als nur das Hinzufügen eines “s” ist? Gibt es eine Tabelle mit allen englischen Substantiven?

  • Wahrscheinlich eine Version davon: php.net/manual/en/function.ngettext.php

    – Dylan Brams

    29. Mai 2014 um 21:57 Uhr

  • Die unten als richtig markierte Antwort ist nicht mehr relevant. Die richtige Antwort für v.5 ist jedoch unten.

    – PapaHotelPapa

    4. März 2016 um 18:10 Uhr

Der Benutzer-Avatar des Alphas
Das Alpha

Laravel 4

Im Illuminate\Database\Eloquent\Model.php Sie finden so etwas wie str_plural($name) Und str_plural ist eine Hilfsfunktion, die verwendet Str::plural Methode und in diesem Fall sieht diese Methode so aus:

public static function plural($value, $count = 2)
{
    return Pluralizer::plural($value, $count);
}

Es ist also offensichtlich, Str::plural Klasse verwendet Illuminate\Support\Pluralizer.php und dort finden Sie, wie es tatsächlich funktioniert. Lesen Sie einfach den Quellcode. Es gibt eine separate Wortzuordnung für irregular word forms mit anderen:

// Taken from Illuminate\Support\Pluralizer
public static $irregular = array(
    'child' => 'children',
    'foot' => 'feet',
    'freshman' => 'freshmen',
    'goose' => 'geese',
    'human' => 'humans',
    'man' => 'men',
    'move' => 'moves',
    'person' => 'people',
    'sex' => 'sexes',
    'tooth' => 'teeth',
);

  • gut gesagt mein Freund … gut gesagt 🙂

    – Lagbox

    29. Mai 2014 um 22:27 Uhr

  • Dasselbe gilt für Lara 6

    – ymakux

    30. März 2020 um 13:03 Uhr

  • ‘status’ => ‘status’ (falls Sie sich gefragt haben, wie ich) (gerade mit PHP Artisan Tinker getestet – Aufruf von Str::plural(‘status’, 2) )

    – Pablo Camara

    31. August 2022 um 1:03 Uhr

Benutzeravatar von andrewtweber
andrewtweber

Laravel 5 & 6

Die Antwort des Alpha war für Laravel 4.

Um zu würdigen, wo es fällig ist, wollte ich die Antwort für Laravel 5+ aktualisieren.

Pluralizer erstreckt sich nun von Doktrin/Beuger um das Rad nicht neu erfinden zu müssen. Diese Bibliothek enthält einige Grundregeln, z

(m|l)ouse         => _ice
(buffal|tomat)o   => _oes
...all else...    => append 's'

Gefolgt von etwas “nicht flektiert” (dh Singular und Plural sind gleich)

deer, fish, etc.

Und schließlich die unregelmäßigen Regeln, z

man  => men
ox   => oxen

Aus der Dokumentation:

Doctrine Inflector verfügt über statische Methoden zum Beugen von Text.

Die Methoden in diesen Klassen stammen aus mehreren verschiedenen Quellen, die über mehrere verschiedene PHP-Projekte und mehrere verschiedene Autoren gesammelt wurden. Die ursprünglichen Autorennamen und E-Mail-Adressen sind nicht bekannt.

Pluralize & Singularize-Implementierungen sind mit einigen Modifikationen von CakePHP entlehnt.

Es ist also interessant, wie sehr sich alle Frameworks gegenseitig ausleihen und wiederverwenden.

1444840cookie-checkWie findet Laravel mehrere Modelle?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy