Laravel 4: как запустить сырой SQL?

Я хочу переименовать таблицу в Laravel 4, но не знаю, как это сделать.

SQL – это alter table photos rename to images . Если есть решение Eloquent, я также хотел бы знать, как запустить сырой SQL, потому что иногда нет альтернативы.

В руководстве Laravel 4 – это говорит о том, что вы выполняете необработанные команды:

 DB::select(DB::raw('RENAME TABLE photos TO images')); 

Я просто нашел это в документации Laravel 4, которая, вероятно, лучше:

 DB::statement('drop table users'); 

Обновление: в Laravel 4.1 (возможно, 4.0 – я не уверен) – вы также можете сделать это для необработанного запроса Where:

 $users = User::whereRaw('age > ? and votes = 100', array(25))->get(); 

Дальнейшее обновление Если вы специально хотите переименовать таблицу – для этого есть команда схемы – см. Ниже ответ Майка.

На самом деле, у Laravel 4 есть функция переименования таблицы в Illuminate / Database / Schema / Builder.php , она просто недокументирована на данный момент: Schema::rename($from, $to); ,

Вы также можете использовать DB::unprepared для запросов ALTER TABLE .

DB::unprepared используется для запросов, таких как CREATE TRIGGER . Но в основном он выполняет необработанные SQL-запросы напрямую. (без использования prepared отчетов PDO)

https://github.com/laravel/framework/pull/54

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

пример

 DB::connection()->getPdo()->exec( $sql ); 

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

Это становится существенным, если вам нужно работать с хранимыми процедурами или использовать любые функции базы данных

Пример 2: set created_at – это значение, которое вам нужно для этого, и боковое удержание любой углеродной забавы

 $sql = 'UPDATE my_table SET updated_at = FROM_UNIXTIME(nonce) WHERE id = ' . strval($this->id); DB::statement($sql); 

Я обнаружил, что это работает в controllerе, но не в миграции

Принятым способом переименования таблицы в Laravel 4 является использование построителя схем. Таким образом, вы хотели бы сделать:

 Schema::rename('photos', 'images'); 

С http://laravel.com/docs/4.2/schema#creating-and-dropping-tables

Если вы действительно хотите самостоятельно выписать исходный SQL-запрос, вы всегда можете:

 DB::statement('alter table photos rename to images'); 

Примечание. Класс DB Laravel также поддерживает запуск необработанных запросов select SQL, insert , update и delete , например:

 $users = DB::select('select id, name from users'); 

Для получения дополнительной информации см. http://laravel.com/docs/4.2/database#running-queries .

Это мой упрощенный пример запуска RAW SELECT, получения результата и доступа к значениям.

 $res = DB::select(' select count(id) as c from prices p where p.type in (2,3) '); if ($res[0]->c > 10) { throw new Exception('WOW'); } 

Если вы хотите запустить только SQL-скрипт без возврата, используйте это

 DB::statement('ALTER TABLE products MODIFY COLUMN physical tinyint(1) AFTER points;'); 

Протестировано в laravel 5.1

Laravel raw sql – Вставить запрос:

позволяет создать ссылку для вставки данных, доступных через URL. поэтому наше имя ссылки – «insertintodb», и внутри этой функции мы используем class db. Класс db помогает нам взаимодействовать с базой данных. мы вставляем статическую функцию classа db. Внутри функции вставки мы напишем наш запрос PDO для вставки данных в базу данных. в следующем запросе мы вставим «мой заголовок» и «мой контент» в качестве данных в таблицу сообщений.

введите ниже код в свой файл web.php внутри каталога маршрутов:

 Route::get('/insertintodb',function(){ DB::insert('insert into posts(title,content) values (?,?)',['my title','my content']); }); 

Теперь выполните пожар над вставкой запроса из ссылки браузера ниже:

 localhost/yourprojectname/insertintodb 

Вы можете увидеть вывод вышеуказанного запроса на ввод, перейдя в таблицу базы данных. Вы найдете запись с идентификатором 1.

Laravel raw sql – Запрос на чтение:

Теперь давайте создадим ссылку get для чтения данных, доступную через url. поэтому наше имя ссылки «readfromdb». мы читаем статическую функцию classа db. Внутри функции чтения мы напишем наш запрос PDO для чтения данных из базы данных. в нижеприведенном запросе мы будем читать данные id ‘1’ из таблицы posts.

введите ниже код в свой файл web.php внутри каталога маршрутов:

 Route::get('/readfromdb',function() { $result = DB::select('select * from posts where id = ?', [1]); var_dump($result); }); 

теперь стрелка выше прочитанного запроса из ссылки браузера ниже:

 localhost/yourprojectname/readfromdb 
  • Laravel перенаправить все запросы на HTTPS
  • глобальная переменная для всех controllerов и просмотров
  • Миграция: не удается добавить ограничение внешнего ключа в laravel
  • Аутентификация с помощью двух разных таблиц
  • file_put_contents (meta / services.json): не удалось открыть stream: Permission denied
  • В чем разница между очередью: work --daemon и queue: listen
  • Laravel перенаправляет обратно в исходное место после входа в систему
  • Красноречивый сбор: подсчет и обнаружение пустых
  • Использование ng-if внутри ng-repeat?
  • Interesting Posts

    Как разместить треугольники стрелки на линиях SVG?

    не удалось запустить COM-объект типа «microsoft.Office.Interop.Excel.ApplicationClass» в «microsoft.Office.Interop.Excel.Application»

    Как преобразовать карту в строку запроса url?

    Как увеличить MKMapView до текущего местоположения пользователей без CLLocationManager?

    Каковы аргументы «уровни», «ключи» и имена для функции concat в Pandas?

    Поделиться контейнером Truecrypt

    Разница с параметрами.Add и Parameters.AddWithValue

    Как получить доступ к свойствам анонимного типа в C #?

    Как переместить выделение в Excel?

    Что означает => и () => среднее значение в Scala

    Продолжение с предварительным форматированием после вставки в Microsoft Word

    Жесткий диск создает «щелчок, щелчок, щелчок …» при запуске системы. Не загружается

    Windows 10 Search не может найти ЛЮБЫЕ приложения. Даже калькулятор

    AngularJS выполняет HTTP-запрос OPTIONS для кросс-исходного ресурса

    Как связать два разных интернет-соединения

    Давайте будем гением компьютера.