Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
php:laravel [2024/11/04 20:52] 192.168.1.159php:laravel [2024/11/04 22:13] (текущий) – [Видеоуроки] 192.168.1.159
Строка 16: Строка 16:
   * https://laravel.com/docs/11.x/releases (EN)   * https://laravel.com/docs/11.x/releases (EN)
   * https://www.slingacademy.com/article/when-to-use-and-when-not-to-use-laravel/   * https://www.slingacademy.com/article/when-to-use-and-when-not-to-use-laravel/
 +
 +===== Видеоуроки =====
 +
 +  * [[https://www.youtube.com/playlist?list=PLze7bMjv1CYtGKFuL_8G0OxsSMmvHE6Xc|Курс по Laravel для начинающих]]
 +  * [[https://www.youtube.com/playlist?list=PLoonZ8wII66h2eXaNdSATK8zkFQ4LxUmt|Laravel - October CMS]]
 +  * [[https://www.youtube.com/playlist?list=PLoonZ8wII66g5zNGjbHiapYZfnX106lRN|October CMS - Создание компонент]]
 +  * [[https://www.youtube.com/playlist?list=PLXCVm4GFpx5DMQeuzyQwZW8QtslxsUxFy|Laravel Helpers]]
 +  * [[https://www.youtube.com/playlist?list=PL3-0tsv0n0zYa0nNtDzq0kS-Ha6l95w3X|Laravel уроки]]
 +  * [[https://www.youtube.com/playlist?list=PLNvHH49JXUUCeFbIl23lHCLO1tTmKWBtn|Фреймворк Laravel]]
 +  * [[https://www.youtube.com/playlist?list=PLTucyHptHtTkUbXaikXEmCWL8GradRx9I|Курс по Laravel 8 обучение с нуля. Бесплатные видеоуроки по Ларавел для начинающих]]
 +  * [[https://www.youtube.com/playlist?list=PL8jSdafHd96wsHGWVlS3_BxHS5FJ4ReND|Курс по Laravel]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t9xFti7HJm8-hAM0XAjzQim|Платные практические курсы]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t9UEjGQHafQB751mf5cwqNv|Шаг 5. Laravel курс. Интернет Магазин]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t8foG_gKb31q7xnAtaOCFBw|Шаг 4.3. CI/CD в целом и CI/CD для Laravel]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t9Ert8mBlNl1UqwllyP1Tm_|Шаг 4.2. Docker в целом и Docker для Laravel]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t-Dy5nO8CnPEvH_ERwZzDSk|Шаг 3.3. Полный курс Laravel Vue работа с Laravel]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t9g9HYi_MyogUfuGeHMjFqF|Шаг 3.2. Курс Laravel Sanctum c vuejs]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t8OTGDdiHJdS3gkdoKajpX9|Шаг 3.1. Курс JWT с Vuejs для Laravel]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t8XxpP2j3-Jy90jSJftNsOC|Шаг 3. Курс Js и Vuejs для Laravel]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t8StX6GztbdMIUXmgPuingB|Шаг 2. Laravel курс. Блог]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t8pnG4ubQemoqnTwf0VFEtU|Laravel курс с нуля, база. 0. Первый проект на Laravel]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t-Q2S8Cgo6a41rvee0f_sCG|SQL курс для Laravel]]
 +  * [[https://www.youtube.com/playlist?list=PLd2_Os8Cj3t-CoUEdoAiYc1sj21FH79no|PHP курс для Laravel с нуля]]
 +  * [[https://www.youtube.com/playlist?list=PLXCVm4GFpx5CZf4X5ppNJTPsaGwSlBXLX|Laravel (полный курс 2023)]]
 +  * [[https://www.youtube.com/playlist?list=PLoonZ8wII66iP0fJPHhkLXa3k7CMef9ak|Laravel 8 - Видеокурс]]
 +
  
 ===== Старт проекта ===== ===== Старт проекта =====
Строка 29: Строка 55:
   * https://github.com/Askedio/laravel-soft-cascade   * https://github.com/Askedio/laravel-soft-cascade
   * https://github.com/Mirocow/laravel-rabbitmq   * https://github.com/Mirocow/laravel-rabbitmq
 +
 ===== Запросы на чтение ===== ===== Запросы на чтение =====
  
Строка 138: Строка 165:
  
 ==== Отношения / Relations ==== ==== Отношения / Relations ====
 +
 +=== Метод "has()" ===
  
 Метод "has()" используется для проверки наличия связи между двумя моделями. Представьте себе модель "Post", которая имеет связь с моделью "Comment". Используя метод "has()", вы можете проверить, есть ли связь, прикрепленная к записи. Метод "has()" используется для проверки наличия связи между двумя моделями. Представьте себе модель "Post", которая имеет связь с моделью "Comment". Используя метод "has()", вы можете проверить, есть ли связь, прикрепленная к записи.
Строка 151: Строка 180:
     ->get();     ->get();
 </code> </code>
 +
 +=== Метод "whereHas()" ===
  
 Метод "whereHas()" такой же, как и метод "has()", но вы можете передать условия для запроса отношения. В примере ниже вы выполняете запрос к модели "Post", в которой отношение имеет тело, содержащее слова "hello". Метод "whereHas()" такой же, как и метод "has()", но вы можете передать условия для запроса отношения. В примере ниже вы выполняете запрос к модели "Post", в которой отношение имеет тело, содержащее слова "hello".
Строка 163: Строка 194:
     $query->where('body', 'like', 'hello%');     $query->where('body', 'like', 'hello%');
 })->get(); })->get();
-</code> 
- 
-<code php> 
-$filter = function ($query) { 
-    $query->where('year', now()->format('Y')); 
-}; 
- 
-$books = Book::with(['author.awards' => $filter]) 
-    ->whereHas('author.awards', $filter) 
-    ->get(); 
 </code> </code>
  
Строка 179: Строка 200:
  $query->where('title', 'like', 'PHP%');  $query->where('title', 'like', 'PHP%');
 })->get(); })->get();
 +</code>
 +
 +=== Метод "withWhereHas()" ===
 +
 +<code php>
 +use Illuminate\Database\Eloquent\Builder;
 +
 +Builder::macro('withWhereHas', fn($relation, $constraint) =>
 + $this->whereHas($relation, $constraint)->with([$relation => $constraint]);
 +);
 </code> </code>
  
Строка 186: Строка 217:
 })->get(); })->get();
 </code> </code>
 +
 +=== Метод "with()" ===
  
 Метод "with()" используется для нетерпеливой загрузки связи Eloquent, чтобы предотвратить проблему N+1, часто встречающуюся при запросе записи. Как правило, рекомендуется использовать метод "with()", когда вы запрашиваете Eloquent, имеющий связь. Метод "with()" используется для нетерпеливой загрузки связи Eloquent, чтобы предотвратить проблему N+1, часто встречающуюся при запросе записи. Как правило, рекомендуется использовать метод "with()", когда вы запрашиваете Eloquent, имеющий связь.
 +
 +<code php>
 +$filter = function ($query) {
 +    $query->where('year', now()->format('Y'));
 +};
 +
 +$books = Book::with(['author.awards' => $filter])
 +    ->whereHas('author.awards', $filter)
 +    ->get();
 +</code>
  
 <code php> <code php>
Строка 200: Строка 243:
 Post::with('comments.likes')->get(); Post::with('comments.likes')->get();
 </code> </code>
 +
 +<code php>
 +$books = Book::with(['author.awards' => function ($query) {
 +    $query->where('year', now()->format('Y'));
 +}])->get();
 +</code>
 +
 +<code php>
 +$books = Book::with(['author.awards' => function ($query) {
 +    $query->where('year', now()->format('Y'));
 +}])->whereHas('author.awards', function ($query) {
 +    $query->where('year', now()->format('Y'));
 +})->get();
 +</code>
 +
 +<code php>
 +$filter = function ($query) {
 +    $query->where('year', now()->format('Y'));
 +};
 +
 +$books = Book::with(['author.awards' => $filter])
 +    ->whereHas('author.awards', $filter)
 +    ->get();
 +</code>
 +
 +=== Метод "load()" ===
  
 Наконец, метод «load()» аналогичен методу «with()», в котором он используется для активной загрузки отношения Eloquent, но его следует использовать, когда у вас уже есть существующий экземпляр Eloquent, например, как показано ниже. Наконец, метод «load()» аналогичен методу «with()», в котором он используется для активной загрузки отношения Eloquent, но его следует использовать, когда у вас уже есть существующий экземпляр Eloquent, например, как показано ниже.