Laravel по-русски

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

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

#1 Laravel 5.x » Помогите пожалуйста создать отношения таблиц и составить запрос » 06.02.2018 06:53:40

imediasun
Ответов: 0

Есть таблица exchange_rates (id,bank_id,city_id)
Есть таблица banks (id,city_id,name)
Есть таблица filials (id,parent_id,city_id)

Вот модель ExchangeRate
public function banks(){
        return $this->belongsTo('App\Bank','bank_id', 'id');
    }

Я пытаюсь выбрать курсы валют с банками и с филиалами в определенном городе

$exchange_rates=ExchangeRate::with('banks')->where('city_id',$data['city_id'])
            ->where('type',$data['nal_beznal'])->get();

Как в этот запрос включить не только банки (with) но и отделения в которых parent_id=banks.bank_id и city_id=$data['city_id']

#2 Laravel 5.x » почему дамп модели есть а метод save() не срабатывает » 02.02.2018 16:34:05

imediasun
Ответов: 1

почему дамп модели есть а метод save() не срабатывает

Вот код
$exchangeRate=$this->setUpEntity($rates, $bank, null , new \DateTime(), 'cash');// city
        dump($exchangeRate);
        if($exchangeRate->save()){
            dd('saved');
        }
        else{
            dd('not_saved');
        }

А вот дамп этой модели
http://prntscr.com/i9593u
В базе не появляется ничего и даже в else я не попадаю
дальше у меня exception отработал но я не понимаю почему ни один dd не отработал

#3 Laravel 5.x » Абстрактный вопрос как построить систему управления правами доступа » 18.01.2018 22:12:35

imediasun
Ответов: 1

В качестве маркера возьмем ACL - систему управления правами доступа.
Могли бы вы смоделировать или на конкретных примерах из опыта или специально сделанных показать подходы реализации ACL на Laravel для крупного Enterprise приложения.
Не просто разграничение прав чтение/запись для определенных сущностей (которая есть "в коробке") с привязкой к группе пользователей, а создание и настройка более гибкой системы - с возможностью указания получателя прав(группа пользователей, индивидуальный пользователь), создания ролей для группировки нескольких прав, возможно работа с динамическими правами (права, которые зависят от ряда внешних факторов, например, от дня недели, времени).
С поддержкой делегирования прав между получателями прав. Также необходима поддержка модульности, чтобы вся система была унифицирована и при разработке нового модуля и включения его в общую систему, все права на сущности и операции этого модуля также подхватывались бы ядром системы.
Таким образом минимальный уровень, который нам сейчас нужен - это организация системы прав на уровне:
- определение прав для работы с сущностью (чтение, изменение и т.д) - они могут быть самыми разными, взависимости от функциональности той или иной сущности(или даже модуля)
- группировка прав в роли (Редактор, Корректор, Читатель и т.д)
- возможность привязки как отдельных прав так и ролей к получателям прав - пользователям, группам пользователей, ботам.
- возможность предоставлять права одних получателям - другим.
Например, пользователь с ролью "Директор", который также принадлежит к группе пользователей "Менеджмент" для которых выставлены свои права и кроме того имеет уникальное право на просмотр отчетов по движению средств, ушел в отпуск, поэтому все его права должны делегироваться пользователю Максиму Николаевичу, без необходимости вручную искать и выставлять все эти права.

Система прав доступа на примере:

https://helpdesk.bitrix24.ru/open/6268091/

Система прав доступа на примере:

https://www.zoho.eu/crm/help/security/

Весьма Благодарен за ответы.Натолкните пожалуйста на мысли может быть подскажите какой шаблон проектирования удачно применить к этой системе, распишите пожалуйста как можно подробнее.Если возможно с вашей стороны.:) Какие темы нужно знать чтобы осуществить подобное?

#4 Re: Laravel 5.x » redirect в роутах на пока еще неизвестный экшн » 15.01.2018 06:55:25

Действительно работает, поясни пожалуйста что это значит чего ему не хватало?

#6 Re: Laravel 5.x » redirect в роутах на пока еще неизвестный экшн » 15.01.2018 01:25:09

http://prntscr.com/i0gdui
Не работает
http://prntscr.com/i0ge6h
http://prntscr.com/i0gejv

Route::get('/seeds/index', 'MakeSeedingController@index')->name('seeds');
А вот так без проблем перенаправляет

#7 Re: Laravel 5.x » Помогите построить отношение Eloquent » 14.01.2018 23:11:52

Спасиво выстроил через pivot Многие ко многим но немного поменял структуру таблиц естественно Спасибо

#8 Laravel 5.x » redirect в роутах на пока еще неизвестный экшн » 14.01.2018 22:52:04

imediasun
Ответов: 8

Здравствуйте Заранее спасибо за ответ
Необходимо перейти на экшн контроллера который и будет указан вторым параметром в маршруте
Так не получилось Хотя переменную $var вижу

Route::get('/seeds/{var}', function($var){
dump($var);
    return redirect()->action('MakeSeedingController@index');
});

Получаю ошибку
http://prntscr.com/i0ebrf
Хотя и контроллер и экшн существуют
Да и простите за повтор темы случайно получилось не вижу как удалить

#9 Re: Laravel 5.x » Помогите построить отношение Eloquent » 13.01.2018 18:04:24

Ты мог бы подсказать конкретно какие в этом случае отношения выбрать

#11 Laravel 5.x » Помогите построить отношение Eloquent » 13.01.2018 17:27:14

imediasun
Ответов: 4

У меня есть таблица Properties
http://prntscr.com/hzwcht
И так же отношения фиксируются в таблице Property_category
http://prntscr.com/hzwcu8

Мне надо зная id одной категории ( 64 ) получить вот эту запись http://prntscr.com/hzwdk1
Как это сделать профессиональнее всего?
Спасибо огромное за ответы

#12 Laravel 5.x » fopen(/seeds_files/cities.txt): failed to open stream: No such file or » 13.01.2018 09:53:04

imediasun
Ответов: 4

fopen(/seeds_files/cities.txt): failed to open stream: No such file or directory
Я переношу сайт с одного фреймворка на другой
Есть два файла в одном я забираю из второй базы таблицу и серриализую массив
    public function cities(){
        //get all data from cities table
        $someModel = new City();

        $someModel->setConnection('mysql2');

        /*$data['cities']=DB::connection('mysql2')->table('cities')->get();*/
        $data['cities']=$someModel->get();
        $myarray=$data['cities']->toArray();
        dd($_SERVER['DOCUMENT_ROOT']);
        $file_pointer = $_SERVER['DOCUMENT_ROOT']."/seeds_files/cities.txt";
        if (!$file_handle = fopen($file_pointer, 'wb')) exit;
        flock($file_handle, LOCK_EX);
        if (fwrite($file_handle, serialize($myarray)) === false) exit;
        flock($file_handle, LOCK_UN);
        fclose($file_handle);
        echo '<h2>Serialize success!</h2>';

        if ( !$file_handle = fopen($file_pointer, 'rb') ) exit;
        $myarrayecho = unserialize( fread($file_handle, filesize($file_pointer)) );
        fclose($file_handle);

        echo '<h2>Serialize back:</h2>';
        echo '<pre>';
        var_dump($myarrayecho);
//print_r($myarrayecho);
//var_export($myarrayecho);
        echo '</pre>';

    }
Здесь отлично открывается файл на запись $file_pointer = $_SERVER['DOCUMENT_ROOT']."/seeds_files/cities.txt";

А во втором файле в Сиддировании CitiesSeederTable
Я пытаюсь открыть этот файл на чтение и засидировать инфу из файла
class CitiesTableSeeder extends Seeder
{

    public function run()
    {

        $file_pointer = $_SERVER['DOCUMENT_ROOT']."/seeds_files/cities.txt";
        if ( !$file_handle = fopen($file_pointer, 'rb') ) exit;
        $dataSet = unserialize( fread($file_handle, filesize($file_pointer)) );
        fclose($file_handle);
        DB::table('cities')->insert($dataSet);
    }
}
И получаю ошибку fopen(/seeds_files/cities.txt): failed to open stream: No such file or directory
когда пытаюсь выполнить команду php artisan db:seed --class=CitiesTableSeeder

Помогите пожалуйста понять

#14 Re: Laravel 5.x » SQLSTATE[42S01]: Base table or view already exists: 1050 » 12.01.2018 21:02:16

bitbucket я клонировал его какое имеет отношение репозиторий к миграциям?

#16 Re: Laravel 5.x » SQLSTATE[42S01]: Base table or view already exists: 1050 » 12.01.2018 20:53:45

А кодировка не влияет вот в месадже чтото пишут про кодировку
http://prntscr.com/hzkmlr

#18 Re: Laravel 5.x » SQLSTATE[42S01]: Base table or view already exists: 1050 » 12.01.2018 20:31:43

Туплю Schema::dropIfExists('credit_prop_fees'); Удаляет из тинкера только почемуто в тинкере null как ответ, но таблица удаляется

http://prntscr.com/hzkdth

#19 Re: Laravel 5.x » SQLSTATE[42S01]: Base table or view already exists: 1050 » 12.01.2018 20:07:36

Они у меня идут одна за другой через несколько, я запустил php artisan migrate у меня вылезла ошибка таблица не удалилась и я запустил тинкер получил null

#20 Re: Laravel 5.x » SQLSTATE[42S01]: Base table or view already exists: 1050 » 12.01.2018 19:29:51

Она и в потоке не хочет срабатывать dropIfExist() когда я запускаю просто даже php artisan migrate. Я ж говорю даже тинкером не убирает таблицу

#21 Re: Laravel 5.x » SQLSTATE[42S01]: Base table or view already exists: 1050 » 12.01.2018 18:31:42

Привет вторая не прямо за первой идет может чуть позже php artisan migrate:refresh composer dump-autoload запускал конечно

#22 Laravel 5.x » SQLSTATE[42S01]: Base table or view already exists: 1050 » 12.01.2018 17:14:09

imediasun
Ответов: 19

In Connection.php line 664:

  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'credit_prop_fees' already exists (SQL: create table `credit_prop_fees` (`id` int unsigned not null auto_increment primary key, `fee_id` int not null, `created_at` timestamp null, `updated_at`
  timestamp null) default character set utf8mb4 collate utf8mb4_unicode_ci)



Есть 2 миграции
Первая

  public function up()
    {
        Schema::create('credit_prop_fees', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('fee_id');


            $table->timestamps();
        });
    }

И во второй как видите есть удаление предыдущей таблицы
public function up()
    {
        Schema::dropIfExists('credit_prop_fees');

        Schema::create('credit_prop_fees', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('credit_id');
            $table->integer('credit_prop_id');
            $table->integer('fee_type_id');
            $table->integer('fee_value_id');
            $table->timestamps();
        });
    }

Что ему может тут не нравится Есть же Schema::dropIfExists('credit_prop_fees');

И даже вот это не срабатывает
C:\OSPanel\domains\laravel.bai.loc>php artisan tinker
Psy Shell v0.8.17 (PHP 7.1.12 — cli) by Justin Hileman
>>> Schema::drop('credit_prop_fees');
=> null


Спасибо огромное за ответы

#23 Laravel 5.x » Объясните что происходит Почему в дампе есть строка а в ретурне ее нет » 13.11.2017 00:40:45

imediasun
Ответов: 1

Почему в дампе есть строка а в ретурне уже ее нет?
посмотри вот это пожалуйста http://prntscr.com/h9j5m3
а это в консоле http://prntscr.com/h9j5xd

Есть какието предположения у вас куда пропала строка?

#24 Re: Laravel 5.x » Почему в Middleware нет остановки по dd Я в шоке это что какойто кеш? » 09.10.2017 13:02:25

Да и вот этот дамп я удалил http://prntscr.com/gv3omh а он открывается
Такое впечатление что Шторм файлы не записывает, Хотя одни записывает другие нет
Middleware как бы я не переписывал ни какой реакции

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