Задать вопрос
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    NubasLol, его вообще никуда пихать не надо. Надо один раз посмотреть понять и простить
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    NubasLol, прекрасно. Я вам ещё раз говорю согласно ларке загрузка релейшена это банальный кастинг атрибута. Но Окей. Рассмотриваем ваш вариант.

    Порушили mvc
    public function edit(Post $post){
       return view(‘view’)->with(‘post’, $post);
    }


    Не порушили mvc
    public function edit(Post $post){
       $post->load(‘user’);
       return view(‘view’)->with(‘post’, $post);
    }


    А теперь закроем тему mvc. View не должно содержать логику и прочее. Оно и не содержит - логика обработки обращения лежит себе в модели. По этому никаких нарушений mvc нет - это ваша фантазия. На каком нибудь голимом getLogicAttribute может висеть вагон логике. Но обращение во вью к $model->logic никоим образом не нарушает mvc. Ибо логика в модели. По этому завязывайте вы свои крики о том что mvc порушили

    ну в идеале - во вью отдавать dto, что бы там вообще никакой логики не было, и модели

    Ну для апи есть resource из которых вообщем то можно наколхозить так называемые view models но из коробки такой возможности нет
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    NubasLol,
    Разделение приложения на слои

    И ещё раз - с точки зрения ларки обращение к $model->attribute тождественно обращению $model->relation. Если вас это не устраивает - зачем жрать кактус?

    Ну это говнокод, бывают полезные касты

    Без всяких обращений в бд или по http кастинг может прервать рендеринг вьюхи и вывалить 500 - долго ли умеючи? Чо делать то? На уровне контроллера перебирать аттрибуты?
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    NubasLol,
    1. круто. И в чем разница отловить 500 на этапе вызова контроллера или на этапе рендеринга вьюхи вы и в том и в том случае получите страницу 500. Разница даже во времени будет 0, ибо все extentd рендирятся после рендеринга конкретной вьюхи

    2. Ломается простите что?

    3. Что я предлагаю перенести во вьюху? Использование магических методов моделей Ларки? Ну они для этого сделаны. Обращение к свойству модели идёт ровно через этот же метод и может быть обвешано кучей мутаций, кастингов и прочих веселух. Вы рассматриваете только поломаный релейшен? А поломанную мутацию? Не готовые данные все дела.

    Не нравится магия ларки - есть симфони с доктриной. Но ларка предлагает такой путь

    4. Для ваших поломок существуют тесты и мониторинг. Попытка получить 500 в лоб как можно раньше решение так себе. А поломанная база положит ларку на этапе ресолва модели.

    З.ы и опять же таки - ну залезьте в route service provider и определите там нужные with - и у вас ларка отвалится ещё раньше. Судя по всем для вас это успех
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    PRodion, еще раз поставьте вывод всех запросов и будет вам счастье - либо дебаг бар, либо руками через DB::enableQueryLog(). Там не трудно обнаружить n+1
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    PRodion, если вы у ревью дергаете отношение user - то конечно
  • Как дублировать загружаемую гиф и изменить ее размер?

    iMedved2009
    @iMedved2009
    Библиотеку которую вы используете нужно угадать?
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    PRodion,

    /**
         * Display the specified resource.
         * 
         * @param App\Models\Post $post
         * @return \Illuminate\View\View
         */
        public function show(App\Models\Post $post): \Illuminate\View\View
        {
            return view('post.show', ['post' => $post]);
        }
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    PRodion, дык тип App\Models\Post и будет. собственно и написано show(Post $post)
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    PRodion, DDD гляньте - на перспективу
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    jazzus, ну я указал что если reviews.user - то надо использовать eager loading.
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    PRodion, во-первых что бы он туда не отправил если вы не залезли в классы ларки и не перефигачили все - будут использоваться prepared statement - которые шлет запрос и данные к запросу отдельно друг от друга - и какое бы дерьмо кто либо туда не запихал - всем пох.
    второе: и не смотря на это вы можете обвешать проверками.
  • Как передать идентификатор в popup?

    iMedved2009
    @iMedved2009
    Andre548, ну и куда я вам сказал поставить?

    <div class="products">
                        @foreach($products as $product)
                            <div class="product">
                                <div class="product_img">
                                    <img src="{{'storage/' . $product->image}}" alt="">
                                </div>
                                <h2 class="product_title">
                                    {{$product->name}}
                                </h2>
                                <div class="product_text">
                                    {{$product->description}}
                                </div>
                                <div class="product_inf">
                                    <div class="product_price">
                                        от {{$product->price}} ₽
                                    </div>
                                    <button class="product_btn active">
     
                                        Выбрать
                                    </button>
                                </div>
                                @include('components.popup')
                            </div>
                        @endforeach
                    </div>
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    PRodion, с чего бы это? у вас при вызове @foreach($post->reviews as $review) через магические методы __call laravel обнаруживает что это relation - грузит его и все. дело с концом. или вы думаете он по одной записи review дергает? А вот когда в цикле идет foreach($posts as $post){ dump($post->reviews); } - вот тогда у вас N+1, потому что он каждый раз в цикле лезет - обнаруживает что это relation и каждый раз дергает

    Вот честно говоря лучше бы вы с этим разобрались - нежели с тем что лучше route model binding или выборка модели в контроллере, или сколько пробелов ставить. Понимание того как работают запросы модели и прочее - куда как важнее.
  • В чем преимущества Route Model Binding?

    iMedved2009
    @iMedved2009
    PRodion,
    1. Плевать сколько. Еще раз eager loading решает проблему N+1. То есть вот такой пример:

    DB::enableQueryLog();
    $posts = Post::get();
    foreach($posts as $post){
        dump($post->reviews);
    }
    dd(DB::getQueryLog());

    Порождает проблему N+1. У вас сначала идет запрос select * from posts; а потом в цикле на каждой итерации идет select * from reviews where post_id = ?. И что бы у вас было не N+1 запросов, а 2 - используется with - eager loading. А если у вас нет цикла проходящего по posts - вы выдернули 1 post, а у него все reviews - в чем цимес eager loading? У вас физически не может быть N+1. У вас всегда будет 2 запроса.

    2.
    Route::group(['middleware' => 'front'], function (){
    
    });
    
    class FrontMiddleware
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
         * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
         */
        public function handle(Request $request, Closure $next)
        {
            Post::addGlobalScope(new StatusScope);
            Review::addGlobalScope(new StatusScope);
            SomeMore::addGlobalScope(new StatusScope);
            return $next($request);
        }
    }
  • Обслуживание бд на продакшене? Docker production?

    iMedved2009
    @iMedved2009
    szQocks, зависит от того как вы это настроили. вы можете настроить так что может зайти не то что любой - а еще и рассылку сделать по всем форумам - мол ребята у меня тут открытые хвосты, а можете сделать так что не зайдет никто - даже вы. Как бы ваш вопрос звучит как "может ли кто нибудь попасть к вам в квартиру?" Ответа на него нет - ибо хрен кто его знает поставили ли вы дверь, и держите ли ключ под ковриком
  • Как передать идентификатор в popup?

    iMedved2009
    @iMedved2009
    Andre548, понял - запихайте @include внутрь div class="product"