2014-01-14 4 views

ответ

15

Да, конечно, это возможно. Вам не нужно расширять любой класс, чтобы создать класс модели, который инкапсулирует бизнес-логику и состоит из методов, вызывающих класс DB.

Просто создайте модель внутри app/models/MyModel.php как этот

class MyModel{ 

    public static function getMyData(){ 
     DB::table('users')->select('column')->get(); 

    } 
} 

, то вы должны быть хорошо, чтобы назвать новый класс статически:

$data = MyModel::getMyData(); 

Если вы хотите расширить класс DB вы могли, хотя скорее, вы хотели бы расширить класс Database/Builder, чтобы расширить функциональность, но это сложная тема, и я подозреваю, что вы задали бы совершенно другой вопрос, если бы это было тем, что вам нужно.

В I заключительной ноте, я бы не держаться подальше от красноречивых, это самая большая вещь о Laravel среди многих других замечательных вещей

+1

Я всегда убегаю от ORM/ненужного добавления слоев в дизайн приложения. Это может сделать разработчика счастливым, но не пользователем. Спасибо за Ваш ответ! – Volatil3

+1

@ Votail3 каждый по своему усмотрению, но я считаю, что производительность сопоставима и меньше кода означает меньше ошибок и больше времени для разработчиков, чтобы создавать новые функции, чтобы пользователи были довольны, в сочетании с меньшими ошибками. Я упомянул, что мои пользователи сейчас очень радостны, и мои разработчики тоже , Красноречивый делает мир более счастливым местом, но я действительно ценю, что это ситуации, когда я могу его бросить. Замечательно, что вы можете легко смешивать подходы, возможно, с упором на оптимизацию запросов узких мест. – WebweaverD

+0

он говорит: * MyModel Class Не найден * Когда я пытаюсь позвонить в контроллер – Volatil3

2

Просто удалить «расширяет Eloquent» и строить запросы с помощью класса DB.

+0

Угадайте, что это не возможно http://stackoverflow.com/questions/16753029/laravel-4-is-it-possible-to-extend-the-db-class – Volatil3

+1

You не следует расширять класс DB. Тогда это возможно. Просто используйте класс DB внутри методов модели. –

1

Гуфи,

Вы должны сделать вашу функцию статичной.

Например,

class Type { 
    public static function type_get() { 
     DB::table('story_types')->get(); 
    } 
} 
Смежные вопросы