2014-01-07 36 views
1

我一直在使用Laravel约2个月。我只是想知道如何以适当的方式定义模型。在Laravel中定义Model的方法是更好的方法吗?

例如,我以这种方式定义模型的方法。

public static get_book_static($id){ 
    return Book::where($id)->first(); 
} 

public get_book($id){ 
    return Book::where($id)->first(); 
} 

在模型中,我定义了静态和非静态方法。

我想知道哪一个更好用,因为Laravel似乎在那里使用了很多静态方法。

+0

我不知道会有多大帮助,这是给你,但Laravel的“静态”的方法其实是门面给一些语法糖,而不是简单的静态方法调用 - 这个视频解释非常好https://开头tutsplus.com/lesson/when-they-say-laravel-shouldnt-use-static-methods/ –

回答

0

没有更好的方法。在某些情况下静态是必要的,在某些情况下不是。如果您需要首先静态调用一个方法来实例化模型对象,那么它需要是静态的。例如,在您的控制器中:

$myBook = Book::find($id); // find() is built into Laravel's ORM 

$myBook->doSomething(); // doSomething() is a custom non-static function that you added to your Book model. 

$anotherBook = Book::findSomeOtherType(); // findSomeOtherType() is a custom static function you added to the Book model. 

此外,它看起来像你正在做额外的,不必要的工作。该Book对象模型:

Book::where($id)->first(); 

相同

Book::find($id); 

你不应该创建任何类型的public get_book($id)功能。只需在您的控制器中直接使用Book::find($id)即可。

http://laravel.com/docs/eloquent

+0

我很想知道 - Laravel是否有模型自动加载器?或者我必须自己启动它(在控制器中) –

+0

使用它们时,模型会自动加载。 Laravel为您全力照顾。 –

相关问题