2013-04-20 4 views
17

In Laravel 4 möchte ich ein Modell verwenden, das eine Event aus meiner Datenbank darstellt. So habe ich in app/models mein Event Modell, das eloquent erweitert.Wie benenne ich ein Modell in Laravel, um nicht mit einer vorhandenen Klasse zu kollidieren?

Laravel 4 verfügt jedoch bereits über eine Event-Klasse, die zum Verwalten von Ereignissen innerhalb des Anwendungslebenszyklus verwendet wird.

Was ich wissen möchte ist, wie kann ich mein Event Modell richtig benennen und auf eine Weise zugreifen, die nicht mit der bestehenden Event Klasse kollidieren wird.

+0

Auf die gleiche Weise verwenden Sie Namespaces an anderen Orten? Ich muss es nur registrieren. – itachi

+0

Bedeutet das, dass ich es nach dem Verzeichnis benenne, in dem es sich befindet? Zum Beispiel 'namespace Model' und dann Zugriff darauf mit' Model \ Event'? – Dwight

+0

Ja. Die Dokumentation enthält ein Beispiel im Modellteil. – itachi

Antwort

20

Sie müssen nur einen Namespace anwenden, wie Sie es normalerweise tun würden. Also zum Beispiel.

<?php namespace Models; 

use Eloquent; 

class Event extends Eloquent { 

} 

Sie sollten dann richtig eingestellt Ihre composer.json so dass es Ihre Modelle lädt. Sie können dafür classmap oder psr-0 verwenden, abhängig davon, ob Sie PSR-0 mit Ihrer Verzeichnisstruktur verfolgen oder nicht.

Ich bin ziemlich sicher, dass das Verzeichnis models bereits zugeordnet ist.

bearbeiten
Wie Sie composer dump-autoload in den Kommentaren erwähnt ausgeführt werden muss.

+3

Dies war der Trick, dachte nicht einmal daran, 'Composer Dump-Autoload 'zu laufen, aber jetzt funktioniert es. – Dwight

+0

Hatte genau das gleiche Problem. Vielen Dank! –

+0

Illuminate/Datenbank/Eloquent/Model.php hasMany Abstürze mit Klasse 'Event' nicht gefunden – malhal

0

Soviel ich habe über die Verwendung von Namespaces, weil ich diese im PHPDocumentar verwenden möchte, ist es nicht möglich, die Namespaces doppelt hinzuzufügen, da Laravel diese für Sie bereits hinzufügt, wenn wir das grundlegende Problem verstehen, warum wir Verwenden Sie Namespaces

1 - viele Bibliotheken verwendet denselben Klassennamen, also verwenden wir Namespaces, um das zu unterscheiden.

2 - Wenn Sie Namespaces verwenden möchten, dann sollten Sie außerhalb des Geltungsbereichs der App sein, bedeutet, ist der Anbieter-Ordner für Sie auf diese Art von Sachen.

Enjoy

Verwandte Themen