2014-11-25 6 views
3

Я новичок в Laravel и использовать это в качестве входного запроса:подготовленное заявление с Eloquent ОРМ/Laravel

DB::table('user_input')->insert(array(
       array('fname' => Input::get('Name'),'lname' => 'no','email' => Input::get('E-Mail'),'date_from' => $from_date,'date_to' => $to_date,'phone' => Input::get('Phone'),'message' => Input::get('Message'),'ip_address' => Request::getClientIp(), 'newsletter' => Input::get('Sign-up')) 

      )); 

, которые я никогда бы не сделать так в стандартном PHP, так как запрос не кажется, быть готовым, и я помещаю пользовательский ввод непосредственно в запрос выше.

Есть ли автоматическая подготовка в Eloquent ORM, которую я не узнал, или как бы я написал подготовленное заявление с Eloquent?

+1

У вас там будет автоматически использоваться подготовленный оператор за кулисами. –

+0

Просто примечание - этот запрос не имеет ничего общего с Eloquent. Это метод вставки 'Query \ Builder', который даже не затрагивает черты Eloquent. Красноречивый, с другой стороны, полагается на 'Query \ Builder' за свой собственный класс« Красноречивый \ Builder ». –

+0

@JarekTkaczyk спасибо за заметку, можете ли вы указать мне в сторону более «красноречивого» способа? – baao

ответ

3

Eloquent делает стиль PDO подготовленными заявлениями за кулисами для защиты от таких вещей, как SQL-инъекция. Элегантные модели также защищают от массового присвоения по умолчанию. Исключение будет выбрано, если вы специально не заметите столбцы базы данных, которые должны быть защищены, или обратные (те, которые должны быть заполнены).

http://laravel.com/docs/4.2/eloquent#mass-assignment

Если вы хотите копать дальше, вы можете посмотреть на класс

/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php` 

, чтобы увидеть, как Laravel строит запросы в красноречив.

+1

массовое присвоение не имеет ничего общего с PDO. –

+0

@JarekTkaczyk хорошо пункт. Я отредактировал свой ответ. –

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