laravel database migrations
Овај водич објашњава руковање базом података Ларавел, миграције, сетве, сирове СКЛ упите, елоквентне моделе, елоквентне односе, занатлије и мајсторе:
У претходном водичу од Ларавел Туториал Сериес , сазнали смо о архитектури, инсталацији и компонентама Ларавел Фрамеворк-а. Детаљно смо видели структуру ПХП пројекта Ларавел.
У овом упутству ћемо обрадити базу података Ларавел, миграције, сетве, покретање сирових СКЛ упита, елоквентне моделе, елоквентне везе, занатлије и Тинкер. У свим примерима користили смо Ларавел верзију 7.
Шта ћете научити:
Интеракција базе података Ларавел
Ларавел Фрамеворк комуницира са базама података користећи сирови СКЛ, течни градитељ упита, и Елоквентан ОРМ . Подржава следеће четири базе података.
- МиСКЛ верзија 5.6+
- ПостгреСКЛ (Постгрес) верзија 9.4+
- СКЛите верзија 3.8.8+
- СКЛ Сервер верзија 2017+
Кораци за повезивање вашег пројекта са МиСКЛ базом података:
Корак 1: Створити нова база података назван дб_ академија (можете користити било које одговарајуће име) путем пхпМиадмин или ХеидиСКЛ .
Корак 2: Направите нови пројекат са именом академија (можете користити било које одговарајуће име).
Белешка:Погледајте наш претходни водич, Ларавел Туториал фор Бегиннерс 1, ако не знате како да инсталирате Ларавел и направите нови пројекат.
Корак # 3: Отворите пројекат у ИДЕ-у и отворите .енв датотека. Промените вредност ДБ_ДАТАБАСЕ (име базе података) до дб_ академија (можете користити било које одговарајуће име). Оба Назив базе података и вредност ДБ_ДАТАБАСЕ у .енв датотека мора бити иста.
Белешка : Можда ћете морати да промените друге параметре базе података у .енв датотеци, попут ДБ_УСЕРНАМЕ, ДБ_ПАССВОД, итд., Овисно о конфигурацији базе података.
Следећи снимак заслона приказује конфигурацију базе података у .енв датотеци.
Ларавел миграције
Ларавел Миграција је посебна карактеристика која се користи за креирање табеле базе података. Подразумевано, кккк_кк_кк_кккккк _цреате_усерс_табле.пхп фајл и кккк_кк_кк_кккккк _цреате_фаилед_јобс_табле.пхп датотека је укључена.
Структура миграције Ларавел
Класа Ларавел Мигратион користи следеће две методе:
- Метода уп (): Овом методом се ствара нова табела, колона или индекс у бази података.
- Метода довн (): Овај метод се користи за испуштање постојеће табеле, колоне или индекса у базу података. Ова метода је супротна методи уп ().
Стварање миграције Ларавел
Покрените следећу наредбу у командној линији да бисте креирали миграцију под називом цреате_туторс_табле .
php artisan make:migrationcreate_tutors_table
Извршењем горње команде створиће се датотека са именом кккк_кк_кк_кккккк_цреате_туторс_табле.пхп у база података / миграције именик.
Отвори кккк_кк_кк_кккккк_цреате_туторс_табле.пхп датотеку и измените постојећи код како је приказано доле.
id(); $table->string('name'); $table->string('subject'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tutors'); } }
Покретање миграција Ларавел
Покрените следећу наредбу у командној линији да бисте покренули све доступне миграције.
php artisan migrate
Горња команда ће створити одговарајуће табеле у бази података, као што је приказано доле.
Враћање миграција
# 1) Враћање последње серије миграција
Покрените следећу наредбу у командној линији да бисте вратили последња серија миграција (може укључивати појединачне или вишеструке миграције).
php artisan migrate:rollback
# 2) Враћање миграција које пружају корак
Покрените следећу наредбу у командној линији да бисте вратили последње две сеобе .
php artisan migrate:rollback --step=2
# 3) Враћање свих миграција апликације
Покрените следећу команду у командној линији за вратити све миграције пријаве.
php artisan migrate:reset
# 4) Враћање уназад и миграција помоћу једне команде
Покрените следећу команду у командној линији за врати се и мигрирај користећи једну команду.
php artisan migrate:refresh
# 5) Враћање уназад и миграција ограничено бр. миграција
Покрените следећу команду у командној линији за вратите се и мигрирајте последње две миграције користећи једну команду.
php artisan migrate:refresh --step=2
# 6) Отпустите све табеле и мигрирајте
Покрените следећу команду у командној линији за испустите све табеле и мигрирајте .
php artisan migrate:fresh
Ларавел Сеединг
Када развијате апликацију, потребни су вам подаци за тестирање апликације. Семе се користи за уметање података о тестирању у базу података.
Стварање сејалице
Корак 1: Покрените следећу наредбу у командној линији да бисте креирали сејалицу под називом УсерСеедер .
php artisan make:seederUserSeeder
Ова наредба ће створити датотеку са именом УсерСеедер.пхп у база података / семе именик.
Корак 2: Отвори УсерСеедер.пхп датотеку и измените постојећи код како је приказано доле.
insert([ 'name' => Str::random(5), 'email' => Str::random(5).'@user.com', 'password' => Hash::make('password'), ]); } }
Корак 3: Отвори ДатабасеСеедер.пхп датотека у база података / семе директоријум и измените постојећи код као што је приказано доле.
call(UserSeeder::class); } }
Белешка : Тхе ДатабасеСеедер класа се користи за позивање осталих класа семена.
Руннинг Сеедерс
Корак 1: Покрените следећу команду у командној линији за регенеришите Цомпосер-ов аутолоадер .
composer dump-autoload
Корак 2: Покрените следећу наредбу у командној линији да бисте покренули ДатабасеСеедер класа.
php artisan db:seed
Уместо да покренете горњу наредбу, можете покренути следећу наредбу у командној линији да бисте покренули УсерСеедер класа.
php artisan db:seed --class= UserSeeder
Белешка : Покрените следећу наредбу у командној линији на испустите све табеле и поново покрените све миграције .
php artisan migrate:fresh --seed
Корак 3: Проверите уметнуте податке помоћу базе података.
База података ће приказати излаз сличан доле наведеном:
Покретање сирових СКЛ упита
Покретање упита за уметање
Корак 1: Додајте следећи сегмент кода у роутес / веб.пхп датотеку за уметање новог записа у тутори сто.
Route::get('/insert', function () { DB::insert('insert into tutors(name,subject) values(?,?)',['Mr John','Computer Science']); });
Корак 2: Посетите УРЛ: хттп: //ацадеми.тест/инсерт
Корак 3: Проверите уметнуте податке помоћу базе података.
База података ће приказати излаз сличан следећем снимку екрана.
Покретање упита за одабир
Корак 1: Додајте следећи сегмент кода у роутес / веб.пхп датотеку за преузимање података из тутори сто који има ид једнако је два .
Route::get('/select',function(){ $tutors=DB::select('select * from tutors where id=?',[1]); foreach($tutors as $tutor) { echo $tutor->name.' is teaching '.$tutor->;subject; } });
Корак 2: Посетите УРЛ: хттп: /ацадеми.тест/селецт
Корак 3: Прегледник ће приказати излаз сличан следећем снимку екрана.
Покретање упита за ажурирање
Корак 1: Додајте следећи сегмент кода у роутес / веб.пхп датотеку за ажурирање записа у тутори сто који има ид једнако је 1 .
Route::get('/update', function(){ $tutors=DB::update('update tutors set name='Mr. Brown' where id=?',[1]); return $tutors; });
Корак 2: Посетите следећи УРЛ: хттп: //ацадеми.тест/упдате
Корак 3: Проверите ажуриране податке помоћу базе података.
База података ће приказати излаз сличан доњој слици:
Покретање упита за брисање
Корак 1: Додајте следећи сегмент кода у роутес / веб.пхп датотеку за брисање записа у тутори сто који има ид једнако је 1 .
Route::get('/delete',function(){ $tutors=DB::delete('delete from tutors where id=?',[1]); return $tutors; });
Корак 2: Посетите УРЛ: хттп: //ацадеми.тест/делете
Корак 3: Проверите избрисане податке помоћу базе података.
База података ће приказати излаз сличан доњој слици:
Ларавел Елокуент Моделс
У МВЦ архитектури лик М. означава Модел . Модел обрађује податке које апликација користи. Сви модели се чувају у апликација именик. Тхе Корисник модел ( Усер.пхп) је подразумевани модел. Свака табела базе података може имати одговарајући елоквентни модел. На пример, Тутор модел чува податке у тутори сто.
Белешка: Име множине класе користиће се као име табеле, осим ако није другачије назначено.
Стварање елоквентног модела
Покрените следећу наредбу у командној линији да бисте креирали модел са именом Тутор .
php artisan make:model Tutor
Ова наредба ће створити датотеку са именом Тутор.пхп у апликација именик.
Уместо горње наредбе, у командној линији можете да покренете следећу наредбу да бисте креирали миграција базе података приликом креирања модела.
php artisan make:modelTutor --migration
Или
php artisan make:modelTutor -m
Обе горње наредбе ће пружити исти излаз.
Убаци податке
Корак 1: Додајте следећи сегмент кода у роутес / веб.пхп датотеку за уметање новог записа у тутори сто.
желим да будем испитивач производа
Route::get('/insert-data',function(){ $tutor=new Tutor; $tutor->name='Mr George'; $tutor->subject='Mathematics'; $tutor->save(); });
Белешка : Стави особину “ користите Апп Тутор ”У роутес / веб.пхп датотеку као што је приказано доле.
Корак 2: Посетите следећи УРЛ: хттп: //ацадеми.тест/инсерт-дата
Корак 3: Проверите уметнуте податке помоћу базе података.
База података ће приказати излаз сличан доњој слици:
Пронађи податке
Корак 1: Додајте следећи сегмент кода у роутес / веб.пхп датотеку за проналажење / преузимање записа у тутори сто који има ид једнако је два .
Route::get('/find-data',function(){ $tutor=Tutor::find(2); return $tutor->name; });
Корак 2: Посетите следећи УРЛ: хттп: //ацадеми.тест/финд-дата
Корак 3: Прегледник ће приказати излаз сличан доњој слици:
Ажурирање података
Корак 1: Додајте следећи сегмент кода у роутес / веб.пхп датотеку за ажурирање записа у тутори сто који има ид једнако је два .
Route::get('/update-data',function(){ $tutor=Tutor::find(2); $tutor->name='Ms Georgina'; $tutor->subject='Computer Science'; $tutor->save(); });
или
Route::get('/update-data',function(){ Tutor::where('id',2)-> update(['name'=>'Ms Georgina','subject'=>'Computer Science']); });
Корак 2: Посетите следећи УРЛ: хттп: //ацадеми.тест/упдате-дата
Корак 3: Проверите ажуриране податке помоћу базе података.
База података ће приказати излаз сличан доњој слици:
Избриши податке
Корак 1: Додајте следећи сегмент кода у роутес / веб.пхп датотеку за брисање записа у тутори сто који има ид једнако је два .
Route::get('/delete-data',function(){ $tutor=Tutor::find(2); $tutor->delete(); });
Корак 2: Посетите следећи УРЛ: хттп: //ацадеми.тест/делете-дата
уник питања за интервју за програмере Јава
Корак 3: Проверите избрисане податке помоћу базе података.
База података ће приказати излаз сличан доњој слици:
Софт Делете Дата
Уместо брисања података из базе података, софт брисање поставља атрибут који се зове делетед_ат на моделу и убаците га у табелу базе података.
Користите следећу особину да омогућите меко брисање.
Осветлите Датабасе Елокуент СофтДелетес
Следећи сегмент кода може се користити за меко брисање података.
Route::get('/soft-delete-data',function(){ Tutor::find(1)->delete(); });
Набавите софтверско брисање података
Тхе витхТрасхед () метода се може користити за добити меко брисање података како је приказано испод.
Route::get('/read-soft-delete-data',function(){ $tutor=Tutor::withTrashed()->where('id',1)->get(); return $tutor; });
Вратите софтверско брисање података
Тхе вратити () метода се може користити за вратити меко брисање података како је приказано испод.
Route::get('/restore-data',function(){ Tutor::withTrashed()->where('id',1)->restore(); });
Трајно избриши податке
Тхе форцеДелете () метода се може користити за трајно избриши податке како је приказано испод.
Route::get('/force-delete-data',function(){ Tutor::onlyTrashed()->forceDelete(); });
Ларавел Елокуент Релатионсхипс
Елоквентан однос помаже у лаком повезивању табела базе података.
Елоквентни типови односа
Следећа листа приказује различите врсте елоквентних односа:
- Однос један на један
- Однос један према многима
- Однос много према многима
- Има једнопролазни однос
- Има везу много-више
- Један на један (полиморфни) однос
- Однос један према многима (полиморфни)
- Однос много према многима (полиморфни)
# 1) Однос један на један
Опис: То је однос један према један између ступаца различитих табела.
Пример односа један-на-један:
hasOne('AppBook); } }
Пример односа један према један (инверзни):
belongsTo('App Author); } }
# 2) Однос један према многима
Опис: У овој врсти односа један модел поседује било који број других модела.
Пример односа један-према-многима:
hasMany('AppReview'); } }
Пример односа један-према-више (инверзни):
belongsTo('AppTutorial'); } }
# 3) Однос много према многима
Опис: То је сложенији однос од односа један према један и један према више, и треба да направите стожерну табелу да бисте дефинисали такав однос.
Пример односа многи према многима:
belongsToMany('AppBook); } }
Пример „много према многима“ (инверзни) Пример:
belongsToMany('AppAuthor); } }
# 4) Има један-један однос
Опис: Повезује моделе кроз један средњи однос.
Пример односа један-један:
hasOneThrough('AppOwner', 'AppCar'); } }
# 5) Има везу са много људи
Опис: Омогућава приступ удаљеним или средњим односима на једноставан начин.
Пример везе са много-више:
hasManyThrough('AppBook, 'AppAuthor); } }
# 6) Један на један (полиморфни) однос
Опис: Сличан је односу један-на-један, али циљни модел може припадати више врста модела на једној асоцијацији.
Пример један-према-једном (полиморфни) односа:
morphTo(); } } class Article extends Model { /** * Get the article's image. */ public function image() { return $this->morphOne('AppImage', 'imageable'); } } class Author extends Model { /** * Get the author's image. */ public function image() { return $this->morphOne('AppImage', 'imageable'); }
# 7) Однос један према многима (полиморфни)
Опис: Сличан је односу један према више, али циљни модел може припадати више од једног типа модела на једној асоцијацији.
Пример један према многима (полиморфни):
morphTo(); } } class Article extends Model { /** * Get all of the article's comments. */ public function comments() { return $this->morphMany('AppComment', 'commentable'); } } class Audio extends Model { /** * Get all of the audio’s comments. */ public function comments() { return $this->morphMany('AppComment', 'commentable'); } }
# 8) Однос много према многима (полиморфни)
Опис: У овој врсти односа, циљни модел има јединствене записе који могу да се деле између осталих модела.
Пример односа много према многима (полиморфни):
morphToMany('AppComment, commentable); } }
Ларавел мајстор
У претходном упутству смо то научили Артисан је интерфејс командне линије ( ЦЛИ ).
Занатске команде
Покрените следећу команду у командној линији да бисте видели све доступне Занатске команде .
php artisan
Следећи снимак заслона приказује излаз горње команде.
Следећа табела приказује неке од важних занатских наредби са њиховим одговарајућим функционалностима, које су преузете из резултата горње наредбе (пхп артисан).
Команда функционалност кеш: чист Исперите кеш меморију апликације помоћ Приказује помоћ за наредбу листа Наводи команде мигрирати Покрените миграције базе података тест Покрените тестове апликације прчкати Интеракција са апликацијом аутх: обриши-ресетује Исперите ознаке за ресетовање лозинке које су истекле дб: семе Усадите базу података са записима догађај: списак Наведите догађаје и слушаоце апликације кључ: генерисати Подесите кључ апликације маке: канал Направите нову класу канала маке: компонента Направите нову класу компоненти приказа маке: контролер Направите нову класу контролера маке: догађај Направите нову класу догађаја направити: фабрика Направите нову фабрику модела чине: слушалац Направите нову класу слушалаца догађаја направити: пошта Направите нову класу е-поште маке: међуопрема Направите нову класу међуопреме чине: миграција Направите нову датотеку за миграцију маке: модел Направите нову класу Елокуент модела направити: обавештење Направите нову класу обавештења чине: посматрач Направите нову класу посматрача чине: политика Направите нову класу смерница маке: провајдер Направите нову класу добављача услуга маке: ресоурце Направите нови ресурс направити: сејалица Направите нову класу сејалице направити: тест Направите нову тест класу мигрирати: свеже Отпустите све табеле и поново покрените све миграције мигрирати: освежити Ресетујте и поново покрените све миграције мигрирати: ресетовати Врати све миграције базе података мигрирати: повратак Врати последњу миграцију базе података обавештења: табела Направите миграцију за табелу обавештења рута: списак Наведите све регистроване руте складиште: веза Креирајте симболичке везе конфигурисане за апликацију
Ларавел Тинкер
Тинкер је РЕПЛ (РЕАД-ЕВАЛ-ПРИНТ-ЛООП) који вам омогућава интеракцију са апликацијом на командној линији. прчкати комуницира са базом података без регистровања рута.
Тинкер користите са Артисан-ом и подразумевано укључује.
Омогућавање окружења Тинкер
Покрените следећу команду у командној линији да бисте омогућили окружење Тинкер.
php artisan tinker
Следећи снимак заслона приказује излаз горње команде.
Убаци податке помоћу Тинкер-а
Покрените следеће наредбе у командној линији да бисте уметнули нови запис у корисника сто.
$user = new AppUser; $user->name = 'User A'; $user->email = 'usera@user.com'; $user->password = 'user123'; $user->save();
База података ће приказати излаз сличан следећем снимку екрана.
Пронађите податке помоћу Тинкер-а
Покрените следећу наредбу у командној линији да бисте пронашли / преузели запис који има ид једнако два у корисника сто.
$user = AppUser::find(2);
Командна линија ће приказати излаз сличан следећем снимку екрана.
Ажурирајте податке помоћу Тинкер-а
Покрените следећу команду у командној линији да бисте ажурирали запис који има ид једнако два у корисника сто.
$user = AppUser::find(2); $user->name = 'User B'; $user->email = 'userb@user.com'; $user->save();
База података ће приказати излаз сличан следећем снимку екрана.
Избришите податке помоћу Тинкер-а
Покрените следећу наредбу у командној линији да бисте избрисали запис који има ид једнако два у корисника сто.
$user = AppUser::find(2); $user->delete();
База података ће приказати излаз сличан следећем снимку екрана.
Закључак
Ларавел Фрамеворк комуницира са базама података користећи сирови СКЛ, течни креатор упита и елоквентни ОРМ. Модел обрађује податке које апликација користи. Елоквентан однос помаже у лаком повезивању табела базе података.
Миграција је посебна карактеристика која се користи за креирање табеле базе података. Засејавање се користи за уметање тест података у базу података што је веома корисно за програмера, јер програмеру требају подаци да тестира апликацију током развоја. Тинкер комуницира са базом података без регистрације рута.
Надамо се да вам је овај водич био користан! У следећем упутству разговараћемо о обрасцима, отпремању датотека, потврди идентитета, слању е-поште, сесијама итд.
Срећно учење!
<< PREV Tutorial |. | СЛЕДЕЋА Лекција >>
Препоручено читање
- Ларавел Цоллецтион и Ларавел Форге Туториал
- Обрасци Ларавел и правила за валидацију са примером
- Ларавел сесија, отпремање / преузимање датотека и дозволе
- ПХП Ларавел Водич за почетнике: Шта је Ларавел Фрамеворк
- МонгоДБ Направите резервну копију базе података
- Тестирање базе података помоћу ЈМетер-а
- Водич за Орацле базе података - шта је Орацле база података?
- 10 најбољих алата за дизајн базе података за изградњу сложених модела података