2013-11-13 5 views
1

Я хотел бы знать, как использовать Fluent Query Builder в модели? Я не могу найти пример того, как это сделать правильно. Все примеры используют Eloquent ORM. Из документации Laravel, в создание Красноречивых моделей является расширением Красноречивого класса:Использование Fluent в модели

class User extends Eloquent {} 

Я понимаю Eloquent может быть большим, но я новичок в Laravel прямо сейчас, и все Eloquent делает это он меня в заблуждение. Как написать модель? так что я могу использовать его в своем контроллере?

Я родом из CodeIgniter, где я хотел бы написать

class some_model extends CI_Model {} 

и я был в состоянии легко автозагрузку эту модель в свой контроль и воспользоваться ею. Как это делается с беглостью?

ответ

1

красноречивого ORM продляет свободным, поэтому все беглые методы доступны. . Красноречивым просто как некоторый синтаксическими я предлагаю вам привыкнуть к нему, он будет держать ваш код понятнее

Heres пример:.

// Fluent query builder 
DB::table('users')->where('id', '=', 1)->first(); 

// Eloquent 
User::find(1); 

// Generated SQL 
select * from users where id = 1 limit 1; 

и генерировать тот же SQL, и за SCE nes Eloquent использует Fluent. Основное различие заключается в том, что использование Eloquent требует наличия моделей, расширяющих модель Eloquent.

Важно понять, что методы Eloquent доступны вам ТОЛЬКО, если вы расширяете класс Eloquent. Свободные методы построения запросов всегда доступны вам, если вы указали правильную базу данных для своего приложения.

Так зачем же использовать Красноречивый вообще?

Как и в приведенном выше примере, Eloquent и Fluent генерируют один и тот же SQL, но все еще остаются значительные отличия в возвращаемом результате, когда ответ более сложный.

Свободный построитель запросов возвращает «простой» ответ только с значениями, нет доступных методов. Это зависит от ваших настроек PDO.

Красноречивый сделает больше для вашего. Вы получаете доступные вам методы, которые поступают прямо из модели Eloquent. Theres также одно большое преимущество здесь, Eloquent вернет коллекцию, которая реализует имеет много полезных интерфейсов. Это означает, что вы можете многое сделать с возвращенными данными.

Heres некоторые хорошо читает:

Whats eloquent and Fluent?

Eloquent collections

+0

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

0

Ну, вы можете просто использовать его, как отображаются документы. Пример:

<?php 
class Foobar extends Eloquent 
{ 
    public static function retrieve($code, $language) 
    { 
     return static::where('code', $code)->where('language', $language)->first(); 
    } 
} 

$foobar = Foobar::retrieve('code', 'EN');

Я использую static::where, потому что это статический метод. (Не дерьмо, Шерлок (-:.)

Вы также можете просто использовать $this->where() или любой другой метод, то where() если модель инициализируются link to query builder docs

Смежные вопросы