Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 5.x » Странное поведение маршрутов(route) в Laravel » 14.12.2020 01:10:26

Ресурс-контроллеры обрабатывают запросы согласно стандартам http.
Существует несколько способов обращения к одному и тому же адресу: get, post, put и delete
Метод route просто подставляет урл в тэг <a> при этом он ничего не говорит о способе, которым делается запрос, поэтому код <a href=> для show и delete будет идентичный - через get ипоэтому обработается методом show

#2 Re: Хорошие практики (FAQ) » Модель данных с использованием стороннего API » 03.12.2020 18:54:22

Я использовал библиотеку guzzle для своего класса.
Вызов API выглядит так:

    $API = new classAPI;

    $params = [
        'some' => 'params',
    ];
    $response = $API->someMethod($params);

По необходимости $response может быть массивом или объектом
someMethod может не иметь параметров, а можно описать их внутри класса classAPI
Выглядит это следующим образом:

    protected function methods(): array
    {
        return [
            'someMethod'      => [
                'url'       => 'getMe',
                'method'    => 'GET',
                'isJson'    => 1,
                'params'    => [
                    'text'      => '',
                ],

            ],
        ];
    }

#3 Re: Общий раздел » Ошибка превышение лимита памяти » 24.11.2020 22:20:15

Читать файл по строкам и импортировать так же, по-строчно.

#4 Re: Laravel 5.x » Валидация данных. Laravel 5.2 » 07.08.2020 11:47:19

Не пойму, зачем конвертить в строку, а потом пытаться на стороне сервера поймать из нее name(разумеется его там не будет)
М.б. сразу воспользоваться методом

$.post( "test.php", { name: "John", time: "2pm" } );

Но настоящие джыдаи сейчас не используют jquery вообще, все нужные заголовки он подставляет сам.

            axios
                .post('/ajax/url', {
                    name: "sometext",
                })
                .then(r => this.afterPost(r.data))

#5 Re: Laravel 6/7/8/9/10 » престлавутый JOIN » 01.07.2020 00:46:30

$tags = explode(",", (string)$request->input('tags'));
$query->join('post_tags as pt', 'p.id', '=', 'pt.post_id')
->whereIn('pt.slug', $tags);

#6 Re: Laravel 5.x » Как расшифровать этот код? » 01.07.2020 00:39:44

Это сеттер переменной slug, в данном случае не берется значение передаваемой переменной $value, а устанавливается в зависимости от $this->title и текущего времени в формате dmyHi
Вызывается при любой записи в slug любого значения, например
$this->slug=0
На выходе получится что то типа
Echo($this->slug) //current-title-010720200055

#7 Re: Laravel 5.x » Массив в объект » 13.06.2020 20:07:17

Ошибка в $room = array($room);
Здесь объект $room зачем-то преобразуется в массив и далее сохраняется в массив $new_room

#8 Re: Laravel 5.x » Преобразовать массив в многомерный » 13.06.2020 02:45:07

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

Ведь очевидно, что image1 и image_description1 это какие-то поля ввода, автоматически генерируемые на форме с помощью js, так что мешает сразу оформить их как надо?

#9 Re: Общий раздел » Добавление\удаление столбцов в миграции » 31.05.2020 22:43:56

нет, такая библиотека не требуется.
Вот пример такой миграции

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class UserRoles extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('user', function (Blueprint $table) {
            $table->json('roles')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('user', function (Blueprint $table) {
            $table->dropColumn('roles');
        });
    }
}

Здесь Вы видите создание столбца roles и откат миграции, при котором удаляется этот столбец.
Разумеется Вы можете поменять действия в up/down местами, тогда миграция будет удалять столбец, а при откате создавать его.

#10 Re: Общий раздел » Таблица "связей" » 29.05.2020 21:30:46

Нет, не получается.
В таблицу связей можно накидать теги в любой момент после создания записи в постах.
Это можно сделать сразу, можно через любой промежуток времени после.

#11 Re: Общий раздел » Таблица "связей" » 29.05.2020 20:34:58

Post

id, title
1, Юность
2, Молодость
3, В расцвете сил
4, Старость

Tag

id, name
1, кино
2, вино
3, домино
4, клестир
5, сортир

PostTags

post_id, tag_id
1, 1
2, 1
2, 2
3, 2
3, 3
4, 4
4, 5

#12 Re: Общий раздел » Таблица "связей" » 29.05.2020 12:31:55

это не дурной тон, это связь один-ко-многим.
Таким способом можно для 1 поста указать только 1 тэг.

То есть таблица Post будет выглядеть так:

id, tag_id
1      , 1
2      , 1
3      , 2
4      , 3

Таким образом создать одному посту несколько разных тегов будет невозможно.

#13 Re: Laravel 6/7/8/9/10 » Привязать айдишник отдела в связанную таблицу » 29.05.2020 02:45:43

Классический пример того, как самому себе создать проблему на ровном месте, а потом мужественно, сквозь слезы, жевать кактус.

Зачем?
Не ну реально, зачем???

Что сложного во фронт передать сразу и id и name и возвращать в бэк айдишник, чтобы потом не заниматься вот этим всем эдаким садомизмом в особо извращенной форме?

А если департаментов 1000? 10000000? А если часть наименований совпадает? А пользователь взял и накосячил, написал  вместо 'ООО' Дарусман - ООО Дapycman?

#14 Re: Общий раздел » Таблица "связей" » 29.05.2020 01:05:58

1 пост может иметь несколько тегов.
Постов может быть много.

Такая таблица называется многие-ко-многим

#15 Re: Веб-разработка » Как вывести только одинаковые значения в двух колонках БД? » 24.05.2020 02:06:43

select *
from users usr
inner join (
	select  count(*) as cnt,
		firstname,
		lastname
	from users
	group by firstname, username
	having cnt>1
) as u ON u.firstname = usr.firstname and u.lastname = usr.lastname

#16 Re: Laravel 6/7/8/9/10 » массив значений в роуте » 10.04.2020 21:36:08

извините что вклиниваюсь в вашу искрометную беседу, но не проще ли работать с роутом через ресурсконтроллер?

#17 Re: Laravel 6/7/8/9/10 » Вазможности Laravel » 25.03.2020 16:15:13

Дополню предыдущего оратора.
На этом сайте есть неплохое руководство под названием Хорошие практики Laravel
Там хоть и не про скл, но, думаю, будет полезно.

#18 Re: Laravel 6/7/8/9/10 » Вазможности Laravel » 24.03.2020 04:38:34

20 строк даже из нескольких миллионов даже для mysql не особая проблема.
Это вообще к Laravel не имеет отношения, тут исключительно задержки бд(сотню мс)

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

#19 Re: Laravel 6/7/8/9/10 » Вазможности Laravel » 23.03.2020 19:43:17

А у меня встречный вопрос.
Вы собираетесь выводить все 700 000 строк за раз?
Скажите, какие из современных браузеров, которые Вы знаете, способны отобразить сразу столько элементов и остаться в сознании?

#21 Re: Laravel 6/7/8/9/10 » Валидация разных форм » 01.03.2020 16:26:27

Изи...

public function update(Request $request){
    $requests = [
        'form_name1' => Gateways1Request::class,
        'form_name2' => Gateways2Request::class,
    ];
        
    $formName = $request->formName;
    $classRequest = $requests[$formName] ?? DefaultRequest::class;

    //валидация
    \App::make($classRequest);

    $gateway = $request -> segment(4);

///....

}

#22 Re: Общий раздел » каждому пользователю своя база данных » 23.02.2020 14:08:09

Естественно это делается на 1 бд, заводить лишние сущности без нужды - это не тру вэй и способ легко подложить себе мину в случае сопровождения. Обновить даже 1000баз будет то еще удовольствие.

1. User - все данные пользователя: id, login, md5hash, roles,...
2. Record - id, user_id, date, text

Выборку данных можно сделать так

//модель таблицы record
class dbRecord exnends Model
{
  protected $table='record';//имя таблицы

  // граничные условия по пользователю
  public function scopeUser($query, $userId)
  {
    return $query->where('user_id', $userId);
  }
}

//контроллер отображающий записи пользователя
class RecordController extends Controller
{
  public function index()
  {
    $records = dbRecord::user(\Auth::id())->paginate();

    return view('index', ['record' => $records]);
  }
}

Обращение к рекорд контроллеру будет возвращать все записи по юзеру.
Стоит добавть скоуп по времени, дабы пользователь мог выбрать период.

Затратность выборки решается либо добавлением индекса по user_id, либо переездом на нереляционную бд, например mongoDb

#23 Re: Общий раздел » каждому пользователю своя база данных » 23.02.2020 11:37:13

В этом вашем уиндусе(тьфу-тьфу-тьфу, чур меня!) было такое понятие как dll-hell, подробности в вики, но тут будет схожая ситуация.
Как будет осуществляться миграция?
Что с целостностью, когда один пользователь даст ссылку на свою запись другому пользователю?
А если потребуется апдейт на таблицы произвести? Например значение одного  поля заменить на другое?

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

#25 Re: Laravel 5.x » Создать собственную обработку ошибок или поменять код с 500 на 503 » 14.02.2020 16:08:42

два извечных вопроса... https://demotiviruem.net/uploads/2014/0 … oprosa.jpg

Если в коде ошибка запланирована, тоды ой, в противном случае её там быть не должно.
Или я чего то не знаю о суровых челябинцах?

Подвал раздела