Laravel по-русски

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

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

#1 Laravel 5.x » Роутинг категорий Nested Set » 24.03.2017 16:01:44

MMysiv
Ответов: 0

Всем доброго времени суток. Имеется каталог с товарами. Сами категории построены на Baum Nested Set. Проблема возникла на этапе создания роутов. Об этом молчит и документация по Baum и Laravel.

Все роуты категорий работают как родительские:
site.com/catalog/{category} - отображает товары родительской категории
site.com/catalog/{subcategory} - отображает товары дочерней категории, но содержит в себе и родителя.

Поэтому, товары в категориях отображаются правильно. Но как настроить роут, чтобы он был следующего вида:
site.com/catalog/{category}/{subcategory}

Где и как необходимо обрабатывать иерархию категорий?
Заранее благодарю.

#2 Laravel 5.x » Insert дополнительных данных в pivot-таблицу из двух input-ов » 22.02.2017 11:08:09

MMysiv
Ответов: 1

Всем привет. Не могу записать дополнительные данные в pivot-таблицу.
В чем суть: добавляется в базу товар, помимо прочих полей указывается кол-во данного товара на данный момент на двух объектах продаж. Поэтому есть 3 таблицы: products, stores и product_store, которая, как понимаете, является связующей. Вот как она выглядит:
Snymok_ekrana_2017_02_22_v_09_17_26.png
Отношения между моделями belongsToMany с указанием withPivot('amount'). Айдишники заходят хорошо, а вот как еще и данные amount записать не понимаю.
Подозреваю, что проблема кроется в неправильной обработке приходящего массива. Input выглядит следующим образом:

@foreach($stores as $store)
    <div class="form-group">
           <label for="{{ $store->name }}">Количество в {{ $store->name }}</label>
           <input type="number" name="stores[{{ $store->id }}]" class="form-control" required>
    </div>
@endforeach

Количество input-ов зависит от количества объектов продаж (stores). Т.о. было сформировано 2 поля, а dd($request) вернул следующие значения:

"stores" => array:2 [▼
        1 => "10"
        2 => "20"
      ]

Где store_id => amount.

Уважаемые разработчики, помогите решить проблему с записью amount в pivot таблицу. Заранее благодарю smile

#3 Laravel 5.x » Замена провайдеров фасадами в L5.3 » 11.10.2016 09:52:08

MMysiv
Ответов: 4

Приветствую всех!
Перешел на L5.3. Не работает удаление новостей, т.к. выдает ошибку:

ErrorException in RouteServiceProvider.php line 8:
Declaration of App\Providers\RouteServiceProvider::boot(App\Providers\Router $router) should be compatible with Illuminate\Foundation\Support\Providers\RouteServiceProvider::boot()

Естественно, в RouteServiceProvider от 5.2 осталось:

public function boot(Router $router)
    {
        parent::boot(); 
		$router->model('post', 'App\Post');
    }

Прочитал документацию к L5.3, она гласит следующее:

You may remove the arguments from the boot method on the EventServiceProvider, RouteServiceProvider, and AuthServiceProvider classes. Any calls to the given arguments may be converted to use the equivalent facade instead.

Получается я должен от метода boot() оставить:

public function boot()
    {
        parent::boot();
    }

А все остальное реализовать в фасаде. Мучаюсь второй день, не понимаю как реализовать и куда этот фасад подключать. В итоге, должна совершаться проверка на возможность совершения пользователем действия удаления новости и срабатывать метод destroy() в контроллере PostController:

public function destroy(Request $request, Post $post)
	{
		$this->authorize('destroy', $post);
		$post->delete();
		return redirect('/brcp');
	}

Прошу вашей помощи ув.разработчики.

#4 Re: Laravel 5.x » Laratrust: роль по умолчанию » 08.10.2016 21:11:18

hzone пишет:

Controllers/Auth/RegisterController.php
править protected function create(array $data)

Я думал об этом, но пока не понимаю как именно реализовать. Создавать колонку с форейном в таблице user - глупо. Была мысль принимать hidden из формы с дефолтным айди группы и пилить отдельный запрос. Что-то не представляю куда что писать. Не могли бы подсказать?

#5 Laravel 5.x » Laratrust: роль по умолчанию » 08.10.2016 15:36:07

MMysiv
Ответов: 4

Всем привет. Прикрутил Laratrust, который написан на основе Zizaco's Role-based Permissions for Laravel 5. Разобрался, через tinker присвоить роль не проблема. Вопрос в следующем: как сделать, чтобы при регистрации пользователям автоматически присваивалась роль user? Прошу помощи знающих людей. Заранее благодарю.

#6 Re: Laravel 5.x » Ошибка миграции: strtolower() » 07.10.2016 01:24:26

Хех. Возможно это странно только мне, но проблема решилась после описания функции down(). Во всяком случае, еще 1 вопрос: создавать ли индексы в столбцах таблицы отношений?

#7 Re: Laravel 5.x » Ошибка миграции: strtolower() » 07.10.2016 01:03:01

hzone пишет:

и форейны пиши не вторым дёрганьем схемы, а внутри первого.

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

#8 Re: Laravel 5.x » Ошибка миграции: strtolower() » 06.10.2016 22:35:18

hzone пишет:

Ох....
Сначала создаются таблицы с данными, а уже потом связей. А то форейн не видит куда ссылается - нет такой таблицы, тоесть у тебя наоборот. связи потом таблицы, при этом связи не видят что связывать. Понятно?

Конечно, я понимаю этот момент. Но в том и дело, что таблица отношения создается последней. Вот эти файлы:

Questions table: 2016_10_06_061046_create_questions_table.php
Tags table: 2016_10_06_063818_create_tags_table.php
QuestionsTagsRelationships: 2016_10_06_063900_create_questions_tags_relationships.php

Это не единственные таблицы у меня, в которых есть внешние ключи. Я думал что есть еще что-то, что может вызывать эту ошибку. Даже не знаю что думать.

#9 Re: Laravel 5.x » Ошибка миграции: strtolower() » 06.10.2016 15:33:14

hzone пишет:

а нахрена комюинированный примари на таблицу связей ?
понты?
если нет, то по простому индексу на каждую колонку и 2 простый форейна.

Благодарю за помощь! Миграция проходит, но выдает что не может установить внешние ключи:

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL  
  : alter table `blagst_questions_tags_relationships` add constraint `questio  
  ns_tags_relationships_question_id_foreign` foreign key (`question_id`) refe  
  rences `blagst_questions` (`id`))   

Вот собственно сама миграция.

Schema::create('questions_tags_relationships', function (Blueprint $table) {
            $table->integer('question_id')->index();
            $table->integer('tag_id')->index();
        });

        Schema::table('questions_tags_relationships', function ($table) {
            $table->foreign('question_id')->references('id')->on('questions');
            $table->foreign('tag_id')->references('id')->on('tags');
        });

А вот миграции таблиц questions и tags:

Schema::create('questions', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('question_author')->unsigned();
            $table->string('question_title')->index();
            $table->text('question_details');
            $table->string('question_status')->default('Ожидает подтверждения');
            $table->timestamp('question_created');
            $table->timestamps();
        });

        Schema::table('questions', function ($table) {
            $table->foreign('question_author')->references('id')->on('users');
        });
Schema::create('tags', function (Blueprint $table) {
            $table->increments('id');
            $table->string('tag_name');
            $table->string('tag_name_eng');
            $table->string('tag_description');
            $table->timestamp('question_created');
            $table->timestamps();
        });

#10 Laravel 5.x » Ошибка миграции: strtolower() » 06.10.2016 09:56:47

MMysiv
Ответов: 17

Приветствую всех!
При выполнении команды php artisan migrate выдается сообщение в консоли: "[ErrorException]: strtolower() expects parameter 1 to be string, array given.
Виновник ошибки миграция:

Schema::create('questions_tags_relationships', function (Blueprint $table) {
            $table->integer('question_id');
            $table->integer('tag_id');
            $table->primary(['question_id'], ['tag_id']);
        });

        Schema::table('questions_tags_relationships', function ($table) {
            $table->foreign('question_id')->references('id')->on('questions');
            $table->foreign('tag_id')->references('id')->on('tags');
        });

В чем собственно может быть проблема?

#11 Re: Laravel 5.x » No such file or directory » 01.08.2016 09:22:20

Спасибо за помощь. Однако теперь появилась новая ошибка:

Sorry, the page you are looking for could not be found.
1/1
NotFoundHttpException in RouteCollection.php line 161:
in RouteCollection.php line 161
at RouteCollection->match(object(Request)) in Router.php line 821
at Router->findRoute(object(Request)) in Router.php line 691
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 54

А вот что прописано в routes.php:

Route::get('blade', function () {
    return view('welcome');
});

#12 Laravel 5.x » No such file or directory » 30.07.2016 21:15:31

MMysiv
Ответов: 3

Измучался уже. Есть 2 файла: welcome.blade.php в папке views, в нем указано @extends('layouts.app'). Сам app.blade.php размещен в папке views/layouts. На сколько я понимаю с размещением и названием файлов проблем нет. Однако перейдя на главную выдает "No such file or directory (View: /Applications/MAMP/htdocs/Translate/resources/views/layouts/app.blade.php)"
В чем собственно проблема?
Заранее благодарю.

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