backlinks>.

Laravel

Документация

http://laravel.su/docs/5.4/installation

https://laravel.ru/docs/v5/releases

http://laravel.su/docs/5.4

https://laravel.com/docs/5.8

ORM Eloquent

20 хитростей в Laravel Eloquent о которых вы не знали

Старт проекта

composer create-project laravel/laravel ./laravel

composer create-project –prefer-dist laravel/laravel:^7.0 ./blo

composer create-project –prefer-dist laravel/laravel ./laravel

composer create-project laravel/laravel {directory} "5.0.*" –prefer-dist

composer create-project spatie/package-skeleton-laravel ./

Модули / Расширения

https://github.com/Askedio/laravel-soft-cascade

https://github.com/Mirocow/laravel-rabbitmq

Запросы на чтение

$user = User::findOrFail($id); $user = User::firstOrCreate(['email' => $email]); $user = User::find(1); $users = User::find([1,2,3]);
$media = Media::find($id); $categories = Category::lists('category', 'id'); return view('medias.edit-media')->with('media', $media)->with('categories', $categories);

IN

Game::whereIn('games.id', $roomList)->get();

Column

Game::whereIn('id', $roomList)->pluck('id')->toArray();

Select fields, field

Table::select('name','surname')->where('id', 1)->get();

AsArray

Game::select('games.id as id')->whereIn('games.id', $roomList)->get()->toArray();

NotNull

Model::whereNotNull('sent_at'); DB::table('table_name')->whereNotNull('sent_at')->get();

Scalar

Model::whereNotNull('sent_at'); DB::table('table_name')->where('id' = 1)->get(); $count = App\Flight::where('active', 1)->count(); $max = App\Flight::where('active', 1)->max('price');

Group where

$results = DB::table('table') ->where(function($query) use ($starttime,$endtime){ $query->where('starttime', '<=', $starttime); $query->where('endtime', '>=', $endtime); }) ->orWhere(function($query) use ($otherStarttime,$otherEndtime){ $query->where('starttime', '<=', $otherStarttime); $query->where('endtime', '>=', $otherEndtime); }) ->orWhere(function($query) use ($anotherStarttime,$anotherEndtime){ $query->where('starttime', '>=', $anotherStarttime); $query->where('endtime', '<=', $anotherEndtime); }) ->get();

Sub query

$sub = Abc::where(..)->groupBy(..); // Eloquent Builder instance $count = DB::table( DB::raw("({$sub->toSql()}) as sub") ) // ->where(..) wrong ->mergeBindings($sub->getQuery()) // you need to get underlying Query Builder // ->where(..) correct ->count();
DB::query()->fromSub(function ($query) { $query->from('abc')->groupBy('col1'); }, 'a')->count();

Запросы на добавление/обновление

$friend = Friend::updateOrCreate( ['user_id' => $friendId, 'friend_id' => $userId], ['status' => Friend::STATUS_ACCEPTED] );

# https://laravel.com/docs/5.3/eloquent#inserting-and-updating-models

Update all

YourModelName::where(['siteView' => 6])->update(['siteView' => 7]); YourModelName::where('siteView', 6)->update(['siteView' => 7]); YourModelName::query()->update(['siteView' => 8]);

Заполнение/обновление/проверка пивот таблиц

$room->games()->attach($gameId); $owner->rooms()->attach($room->id, ['is_admin' => true]); $user->roles()->updateExistingPivot($roleId, $attributes); $post->comments()->saveMany([ new App\Comment(['message' => 'A new comment.']), new App\Comment(['message' => 'Another comment.']), ]); $user->roles()->attach($roleId); $user->roles()->attach($roleId, [‘expires’ => $expires]); App\User::find(1)->roles()->save($role, ['expires' => $expires]); $user->roles()->toggle([1, 2, 3]); $messages = Message::where('message_id', $id)->get(); foreach($messages as $message) { $message->users()->updateExistingPivot($user, array('status' => 1), false); } $items = $invoice->items->pluck('name', 'id')->toArray(); foreach ($items as $key => $item) { $invoice->items()->updateExistingPivot($key, ['quantity' => $request->quantity]); } $user->rooms()->get()->contains($room->id)

Increment

$article = Article::find($article_id); $article->increment('read_count'); Article::find($article_id)->increment('read_count'); Article::find($article_id)->increment('read_count', 10); // +10 Product::find($produce_id)->decrement('stock'); // -1

Запросы на удаление

$ids = array(10, 20, 30); DB::table('table_name')->whereIn('id', $ids)->delete(); MyModel::truncate(); \App\Model::query()->delete(); DB::statement("SET foreign_key_checks=0"); Model::truncate(); DB::statement("SET foreign_key_checks=1"); DB::table('table_name')->truncate(); DB::table('table_name')->delete(); Model::whereRaw('1=1')->delete(); User:where('id', 'like' '%%')->delete(); DB::table('users')->whereIn('id', $ids_to_delete)->delete();

Transactions

app('db')->beginTransaction(); app('db')->commit(); app('db')->rollBack();