Не коректно работает joinWith()

При выполнении запроса с связями в ответе получаю не все данные




$test = \backend\models\Inventory::find()->joinWith(['nomenclature'])->limit(100)->asArray()->all();

count($query) // 93 



в бд есть >10к записей

причем если сделать вот так




$test = \backend\models\Inventory::find()->with(['nomenclature'])->limit(100)->asArray()->all();

count($query) // 100



то все ок но нет возможности использовать сортировку группировку

где я делаю чтото не так ?

Inventory.php




public function rules()

    {

        return [

            [['nomenclature_id', 'siteuser_id', 'status'], 'required'],

            [['nomenclature_id', 'siteuser_id', 'status','qty', 'inventory_id'], 'integer'],

            [['serial', 'condition', 'currency'], 'string'],

            [['recive_date', 'create_date'], 'safe'],

            [['price', 'pt_price'], 'number'],

        ];

    }

public function getNomenclature()

    {

        return $this->hasOne(Nomenclature::className(), ['nomenclature_id' => 'nomenclature_id']);

    }




Nomenclature.php




  public function rules()

    {

        return [

            [['site_id', 'new_parse', 'rare', 'nomenclature_brand_id', 'nomenclature_id', 'category_id'], 'integer'],

            [['part_num', 'description', 'mfg', 'ups_code'], 'string'],

        ];

    }



немного информации

при использовании ->with([‘nomenclature’]) - делается 2 запрос

при использовании ->joinWith([‘nomenclature’]) - всё происходит в одном запросе причём объединение происходит по LEFT JOIN

давай посмотрим что за запросы у тебя получились и в чём разница потому что LEFT JOIN должен выбрать по идее всё из Inventory (то есть разницы не должно быть) но ты говорил про группировки возможно тут собака зарыта!

чтоб увидеть запрос сделай так:

echo \backend\models\Inventory::find()->joinWith([‘nomenclature’])->limit(100)->createCommand()->rawSql;

echo \backend\models\Inventory::find()->with([‘nomenclature’])->limit(100)->createCommand()->rawSql;

я так понимаю это не оригинальные запросы желательно чтоб ты показал рабочие запросы

joinWith делает также 2 запроса но первый запрос включает все "JOIN" для того чтоб работала сортировка

мне кажется остальное работает так же как with просто

проблема решилась

что было не так

в модели Inventory primaryKey()… по ошибке были указаны поля которые не являются уникальными

из за этого терялись записи при выводе

Всем спасибо!