О нас
Разработчикам
Заметки
Переводчик
Транслитератор
Сравнить текст
Генератор пароля
Ip и информация
Декодировать JSON
Локация
О нас
Разработчикам
Заметки
Переводчик
Транслитератор
Сравнить текст
Генератор пароля
Ip и информация
Декодировать JSON
Локация
Laravel db
us.content
<?php // Миграции $table->dropColumn('slug'); // Удалить колонку, заполнить в change_pages_table в методе down() $table->id(); // Поле id c инкрементом $table->unsignedInteger('count')->unsigned(); // Поле count типа INT(11), не использовать минусовые цифры $table->unsignedSmallInteger('votes')->after('title'); // Поле votes типа SMALLINT(6), after - вставить после поля title $table->string('email')->unique(); // Поле email длина по-умолчанию 191 уникальное $table->string('email', 40); // Поле email длина 40 $table->text('content'); // Поле content типа TEXT $table->enum('agree', ['1', '0'])->default('0'); // Поле agree типа ENUM, значение по-умолчанию 0 $table->timestamp('email_verified_at')->nullable(); // Метка времени email_verified_at, nullable - разрешено значение NULL $table->timestamps(); // Метки времени, создаёт два поля created_at и updated_at // Создаётся связь таблиц Один к одному Один ко многим $table->unsignedBigInteger('user_id'); // Поле user_id $table->foreign('user_id')->references('id')->on('users') // Внешний ключ user_id и он ссылает на id в таблице users ->cascadeOnDelete(); // Удалить из связанной таблицы при удаление основного элемента // Создаётся связь таблиц Многие ко многим, создаётся дополнительная таблица role_users последовательность по алфавиту $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users')->cascadeOnDelete(); $table->unsignedBigInteger('role_id'); $table->foreign('role_id')->references('id')->on('roles')->cascadeOnDelete(); // Создание индекса: $table->unique('email'); // Уникальное колонка $table->index('account_id', 'name_index'); // Указать имя индекса во втором параметре $table->index(['account_id', 'created_at']); // Для удаления индекса $table->dropIndex('account_id'); // Внешний ключ: $table->foreign('user_id')->references('id')->on('users'); // user_id в таблице posts, который сылается на столбец id таблицы users (можно добавить ->cascadeOnDelete();) if (Schema::hasTable('users')) // Проверить существует ли таблица users if (Schema::hasColumn('tableName' ,'ColumnName')) // Проверить существует ли колонка name // MODEL // Вставить в таблицу Page данные, можно использовать даже если передать null Page:create([ 'title' => 'Name', 'content' => 'Content...', ]); // Page:updateOrCreate обновить или создать // Получение или создание, получаем по name $page = Page::firstOrCreate( ['name' => 'Tokyo'], ['delayed' => 1, 'arrival_time' => '11:30'] ); // updateOrInsert или можно использовать этот метод, он игнориует sotDelete, при updateOrCreate будет ошибка если запись удалена // Удаление Page::destroy([1, 2]); // Удалить записи с id 1 и 2, можно без массива передать один id Page::truncate(); // Удаление всех связаных $page = Page::find(1); $page->delete(); //use App\Page; В классе /database/seeder.php дописать наследование // php artasan db:seed Запуск в консоле на исполнение // Через класс Seeder для добавления данных в таблицу // php artasan make:seeder PageSeeder Создать класс и в нем добавить запрос insert //$this->call( PageTableSeeder::class ); В класс /database/seeder.php в методе run добавить код // Просмотреть (прослушать) SQL запросы, можно использовать в /app/Providers/AppServiceProvider.php, добавить наследование use Illuminate\Support\Facades\DB; DB::listen(function ($query) { dump($query->sql, $query->bindings); }); // Работа с ДБ Page::all(); // Получить всё, где Page модель $page = Page::find(2); // Получить по id, где Page модель Page::findMany([1, 2, 3]); // Получить несколько по id, где Page модель $page->save(); // Сохранить $page->update(); // Обновить $page->update([ 'active' => false, ]); $page->getDirty(); // Если нужно увидеть что изменилось в полях или ->isDirty() boolean возвращает \App\Models\Page::query()->update(['active' => false]); // У всех элементов поменять поле active $page->delete(); // Удалить Page::whereIn('id', [1, 2, 3])->get(); // Получить несколько по id, где Page модель Page::findOrFail(2); // Если запись не найдена, то выбросить исключение, найти по id Page::where('slug', 'contacts')->firstOrFail(); // Если запись не найдена, то выбросить исключение, найти по любому правилу DB::table('pages'); // Название таблицы DB::table('help')->select('key')->where('id', 1)->first(); DB::table('help')->select('key')->whereIn('id', [1, 2, 3])->get(); // Если where массив // Для вложенного запроса $values = DB::table('products') ->whereNull('deleted_at') ->whereStatus('active') ->whereIn('id', function($query) { $query->from('category_product') ->select('product_id') ->where('category_id', 1); }) ->get(); DB::select('select * from users where id = :id', ['id' => 1]); // Выполняет sql запрос DB::select('select role_id from users where email = ?', ['email@gmail.com']); DB::insert(); // Возвращает кол-во вставленных записей DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']); $id = DB::connection()->getPdo()->lastInsertId(); // Возвращает id изменённой записи DB::update(); // Возвращает кол-во изменённых записей DB::delete(); // Удаляет записи из таблицы DB::statement('drop table users'); // Удалить таблицу //Транзакция /*DB::transaction(function () { DB::table('users')->update(['votes' => 1]); DB::table('posts')->delete(); }, 3)*/ \Illuminate\Support\Facades\Schema::hasTable($table); // Есть ли таблица Model::all()->keyBy('id'); // ID вместо ключей Model::whereStatus('active')->get()->keyBy('id'); // ID вместо ключей $values = $values->keyBy('id'); // Или можно сделать для объекта, вместо id можно любую колонку $pages = DB::table('page')->get(); // Получить всё из таблицы $values = DB::table('page')->pluck('title'); // Возвращает колонку, 2-ым параметром можно передать значение другой колонки, и это будут ключи массива $values = DB::table('page')->count(); // Возвращает кол-во записей $values = DB::table('page')->max('id'); // Возвращает максимальное значение поля $values = DB::table('page') ->select('id', 'title') ->where('id', '=', 1) // где id = 1, 2-ой параметр можно пропустить, по-умолчанию =, можно так написать where([ ['id', 1], ['title', 'like', 'test%', 'OR'] ]) ->where('title', 'like', 'test%', 'OR') // в title содержится test, OR оператор между условиями, по-умолчанию AND. Можно использовать ->orWhere('title', 'like', 'test%') //->whereBetween('id', [1, 5]) // where id between 1 and 5 //->whereNotBetween('id', [1, 5]) // where id not between 1 and 5 //->whereNotIn('id', [1, 5]) // where id in (1, 5) //->whereNotIn('id', [1, 5]) // where id not in (1, 5) ->whereNull('price') // поле, где не null ->groupBy('id') // В выборе будут моделе разделены по parent_id в свои модели ->take(4) // limit 4 ->first() // Одну запись ->firstOrFail() // Одну запись, если запись не найдена, то выбросить исключение ->skip(2) // offset 2 Пропустить 2 записи и начать с третьей ->orderBy('id', 'desc') // order by id DESC по-умолчанию ASC ->get() // Возвращает определённые поля ->paginate(24) // Показать пагинацию ->addSelect('text') // Добавить колонку к выбору ->lists('title') // Выбрать только колонку title ->value('email'); // Одна ячейка $values = DB::table('page')->distinct()->select('title')->get(); // Возвращает поле title только уникальные $values = DB::table('page')->select('id'); // Сформировать запрос $values = $values->addSelect('title AS name', 'content')->get(); // и добавить в запрос (AS name - задать псевдоним) $values = DB::table('page') ->select([DB::raw("'{$this->routeSearch}' as route"), 'id', 'title', 'slug', 'img']) // Выбираем из БД нужные колонки и добавляем свою ->get(); $article = Article::query(); // Можно использовать query и далее динамически формировать запрос $article->read_count++; // Можно + 1 так сделать $article->increment('read_count'); // Но лучше так // Вставить записи DB::table('page')->insert( ['title' => 'Name1', 'content' => 'Content...1'] ); // Вставляет одну запись $id = DB::table('page')->insertGetID( ['title' => 'Name1', 'content' => 'Content...1'] ); // Вставляет одну запись и вернуть id последней // Вставляет множество записей DB::table('page')->insert( [ ['title' => 'Name1', 'content' => 'Content...1'], ['title' => 'Name2', 'content' => 'Content...2'], ] ); // или Page::insert([[//...],[//...]]); // Обновить множество, первый параметр: массивы данных для обновления, второй колонки которые идентифицируют записи, третий колонки которые менять Page::upsert([ ['departure' => 'Oakland', 'destination' => 'San Diego', 'price' => 99], ['departure' => 'Chicago', 'destination' => 'New York', 'price' => 150], ], ['departure', 'destination'], ['price']); // Обновить записи DB::table('page') ->where('id', 2) ->update(['title' => 'New Name', 'content' => 'New Content']); // Обновить запись с id 2, возвращает кол-во изменённых записей DB::table('page')->where('id', 2)->increment('price', 5); // Обновить запись с id 2, прибавив к ней 5 DB::table('page')->where('id', 2)->decrement('price'); // Обновить запись с id 2, отняв 1 (-1) // Удалить записи DB::table('page')->where('id', 2)->delete(); // Удалить запись с id 2, возвращает кол-во удалённых записей User::has('page')->get(); // Если есть у пользователей страницы, то они достаются Если добавить в has '>=', 3, то будет пользователь, который добавить 3 и более страницы // Жадная загрузка $pages = Page::with('user', 'role')->get(); // Получаю всё из таблицы pages и из связанныех моделе User и Role, тем самым делается всего 2 запроса $pages = User::with('page:id,title')->get(); // Получаю у пользователя связанные страницы c колонками id и title // with добавить фильтр в выборку $product = Product::with(['modifiersGroup' => function ($query) { $query->orderBy('sort'); }])->find($product_id); $users = Product::with('modifiersGroup')->get()->sortByDesc('modifiersGroup.created_at'); // Можно так // Получить товары, статус категории у которых не равен active, для вложенных связей categories.statuses $products = Product::whereHas('categories', function ($query) { $query->where('status', '!=', 'active'); })->get(); // Получить категорию по полю slug с товарами с учётом фильтров из связи многие ко многим, например $filters = 'filtet1,filtet2,' $category = Category::with(['products' => function ($query) use ($filters) { if ($filters) { $filters = rtrim($filters, ','); $filtersArr = explode(',', $filters); $query->whereHas('filters', function ($q) use ($filtersArr) { $q->whereIn('slug', $filtersArr); }); } $query->orderBy('sort')->orderBy('popular', 'desc'); // Сортировка товаров }]) ->whereSlug($slug); $pages = Page::all(); $pages = Page::load('user'); // Дозагрузка из моделе User
Список