Как отдебажить scope?

167
24 апреля 2019, 09:30

Админка на october cms

у меня есть модель Shop.php

<?php namespace Aplus\Buildb\Models;
use Model;
/**
 * Model
 */
class Shop extends Model
{
    use \October\Rain\Database\Traits\Validation;
    /**
     * @var array Validation rules
     */
    public $rules = [
        'code' => 'required|unique:aplus_buildb_shops'
    ];
    public $customMessages = [
        'code.required' => 'Заполните код магазина',
        'code.unique' => 'Магазин с таким кодом уже есть в базе',
    ];
    public $belongsTo = [
        'city'    => [City::class], 
        'mall'    => [Mall::class],
        //'ad_type' => [AdType::class],
    ];
    public $hasMany = [
        'frames' => [Frame::class], //"Aplus\Buildb\Models\Frame"
        'works'  => [Work::class],  //"Aplus\Buildb\Models\Work"
    ];
    /**
     * @var string The database table used by the model.
     */
    public $table = 'aplus_buildb_shops';

    public function getRegionOptions()
    {
        return Region::all()->lists('name', 'id');
    }
    public function getCityOptions()
    {
        $region = isset($this->region)
            ? Region::find($this->region)
            : Region::find(key($this->getRegionOptions()));
        if ( ! isset($region) ) {
            return City::all()->lists('name', 'id');
        }
        // dump($region->cities());
        return collect($region->cities)->lists('name', 'id');
    }

    //Получаем все ТК выбранного города ( для аренды)
    public function getMalls()
    {
        return Mall::all()->lists('name', 'id'); 
        // array:17 [
        //   1 => "Л203"
        //   2 => "Л228"
        //   3 => "Л227"
        //   4 => "Л154"
        //   5 => "Л184"
        //   6 => "Л212"
        //   7 => "Горки ТК"
        //   8 => "Л74"
        //   9 => "Тетрис ТК"
        //   10 => "Л94"
        //   11 => "Л209"
        //   12 => "Л245"
        //   13 => "Л146"
        //   14 => "Л58"
        //   15 => "Л219"
        //   16 => "Л238"
        //   17 => "Л192"
        // ]
    }


    public function getShopsOptions()
    {
        $mall = isset($this->mall)
            ? Mall::find($this->mall)
            : Mall::find(key($this->getMalls()));
        // if ( ! isset($mall) ) {
        //  return City::all()->lists('name', 'id');
        // }
        dump($mall->cities());
        return collect($mall->cities)->lists('name', 'id');
    }
    public function beforeSave()
    {
        $data = post();
        // dd($data['Frame']['_city']);
        // dump(array_key_exists('_city', $data['Mall']));
        // dump($data['Frame']);
        // dump(_city)
         // dump($data['Shop']['city']);
         // dump($data['Mall']);

    }




public function scopeShopByCity($query)
    {
        $data = post(); 
        // dump($shops);
        if ( array_key_exists('_city', $data['Frame']) ) {
            $shops = (! empty($data['Frame']['_city']))
                ? collect(City::find($data['Frame']['_city'])->shops)->lists('id') //находим все города в рамах, и выводим их id
                : Shop::all()->lists('id'); //список id всех магазинов
        }
        return $query->whereIn('id', $shops);
    }

public function scopeMallByCity($query)
    {
        $data = post(); 

        if ( array_key_exists('_city', $data['Mall']) ) {
            $malls = (! empty($data['Malls']['_city']))
                ? collect(City::find($data['Malls']['_city'])->shops)->lists('id') //находим все ТК
                : Mall::all()->lists('id'); //список id всех магазинов
                 dd($query);
        }

        return $query->whereIn('id', $malls);
         dd($query);
    }
    // Db::connection()->enableQueryLog();
    // trace_log( Db::getQueryLog() );

    // Db::connection()->disableQueryLog();
}

как мне определить что попадает в ($query) функции scopeShopByCity ?

dd и dump, ничего не выводят во вкладке XHR

что вообще делаю : вывожу только те ТК (mall) , которые есть в выбранном городе

fields.yaml для shop :

fields:
    code:
        label: 'Код магазина'
        span: auto
        type: text
    city:
        label: Город
        nameFrom: name
        descriptionFrom: description
        span: auto
        type: relation
    type:
        label: 'Тип магазина'
        options:
            0: Собственный
            1: Аренда
        span: auto
        type: dropdown
    mall:
        label: 'Торговый комплекс'
        nameFrom: name
        descriptionFrom: description
        span: auto
        type: relation
        emptyOption: 'Не выбран'
        trigger:
            action: empty|disable
            field: type
            condition: value[0]
    address:
        label: Адрес
        size: small
        span: auto
        type: textarea
        trigger:
            action: empty|disable
            field: type
            condition: value[1]
#    ad_type:
#        label: 'Вид рекламного материала'
#        nameFrom: name
#        descriptionFrom: description
#        span: auto
#        type: relation
    description:
        label: Описание
        size: small
        span: auto
        type: textarea
    # price_type:
    #     label: 'Тип цены'
    #     options:
    #         0: Фиксированная
    #         1: 'За квадратный метр'
    #     span: auto
    #     type: dropdown

в controllers\malls\config_relation.yaml :

shop:
    label: магазина
    view:
        form: $/aplus/buildb/models/shop/fields.yaml
        toolbarButtons: link|unlink|update|create
    manage:
        form: $/aplus/buildb/models/shop/fields.yaml
        list: $/aplus/buildb/models/shop/columns.yaml
        showSearch: true
        scope: mallByCity
READ ALSO
Не могу построить диаграмму

Не могу построить диаграмму

Есть код, который нормально работаетНо когда я выставляю приоритет WHERE pollid =3; Диаграмма не отображается

164
PHP работа с процентами

PHP работа с процентами

Не могу понять как работают в php проценты

160