• Как правильно настроить маршрутизацию для вложенного модуля в Yii2?

    @Pios88 Автор вопроса
    Максим Тимофеев, да, извиняюсь, забыл этот момент в вопросе уточнить.
    Модуль API:
    <?php
    namespace app\modules\api;
    
    class module extends \yii\base\Module
    {
        public $controllerNamespace = 'app\modules\api\controllers';
        
        public function init()
        {
            parent::init();
            
            $this->modules = [
                'v1' => [
    
                    'class' => 'app\modules\api\modules\v1\Module',
                ],
            ];
        }
    }

    Код вложенный модуль v1:
    <?php
    namespace app\modules\api\modules\v1;
    
    class Module extends \yii\base\Module
    {
        public $controllerNamespace = 'app\modules\api\modules\v1\controllers';
    
        public function init()
        {
            parent::init();
    
        }
    }
  • Как вывести вложенные списки из связанной таблицы?

    @Pios88 Автор вопроса
    Да, все правильно. Просто ошибка в одном месте была: getBooks , а запрос по факту шел getBook , потому многое и не работало. Но все равно спасибо большое за ответ!
  • Как вывести вложенные списки из связанной таблицы?

    @Pios88 Автор вопроса
    Связи уже не на столько страшное слово как в начале:)))
    Попытался использовать ваш код и получил ошибку, нашел ее, исправил и получил не только решение заданного вопроса, но и решение другой проблемы разом:)
    Все работает. Спасибо большое!)
  • Как вывести количество строк из связанной таблицы по ключевому значению?

    @Pios88 Автор вопроса
    Дмитрий Ким , подскажите, а можно этот код модифицировать таким образом, чтобы выводить уже не количества, а список книг каждого автора?
    То есть примерно в таком виде:
    Автор 1:
    - книга 1
    - книга 2
    - книга 3
    Автора 2:
    - книга 1
    - книга 2
    и т.п.
    Хотя бы просто title из таблицы book?
    Сам пытался, знания матбазы не хватает...
  • Как сделать правильное обращение к модулю Yii?

    @Pios88 Автор вопроса
    Нашел!
    Файл с фактическим адресом \modules\admin\module.php был именован с маленькой буквы
    А в config/web класс имел вид: app\modules\admin\Module , то есть с большой буквы

    Изменил module.php на Module.php и получил искомый результат:)

    Максим Федоров , большое спасибо за хороший ответ!
  • Как сделать правильное обращение к модулю Yii?

    @Pios88 Автор вопроса
    Извиняюсь, что такую информацию на поверхности пропустил, по незнанию копал не в ту сторону.... Но и тут не все гладко опять:

    В config/web.php перед 'components' (если это вообще важно) я подключил искомый модуль:

    'modules' => [
            'admin' => [
                'class' => 'app\modules\admin\Module',
            ],
        ],


    Воспользовался вашей рекомендацией и при запросе на: index.php?r=admin/default/index
    Получил ошибку:

    ReflectionException
    Class app\modules\admin\Module does not exist


    О_о
  • В Yii2 как получить количество элементов с помощью hasMany?

    @Pios88
    Максим Федоров, у меня связанные модели book и author. Соответственно:
    $this->hasMany(Book::className(), ['author_id' => 'id']);

    $this->hasOne(Author::className(), ['id' => 'author_id']);

    И нужно вывести количество книг у одного автора. Я пытался вот этот пример по ссылке рассмотреть, но лыжи не едут....:
    $customers = Customer::find()
        ->select([
            '{{customer}}.*', // получить все атрибуты покупателя
            'COUNT({{order}}.id) AS ordersCount' // вычислить количество заказов
        ])
        ->joinWith('orders') // обеспечить построение промежуточной таблицы
        ->groupBy('{{customer}}.id') // сгруппировать результаты, чтобы заставить агрегацию работать
        ->all();


    Не понимаю что в моем случае ставить в
    select(['{{customer}}.*', 'COUNT({{order}}.id) AS ordersCount'])

    По аналоги получится author вместо customer и book вместо order, но я тогда в упор не понимаю почему обращение в таблице author, если нужно вывести количество книг, а они хранятся в book. Хоть аналогия и полная с примером, а на выходе ересь получается.
    Вообще не пойму хоть убейся как мне это количество выродить и как потом в одну строку с именем автора вывести. (не хватает смайла: "рукалицо").
    Знание матбазы у меня нулевое, а задачу надо выполнить. Не объясните, что я не так делаю или я вообще не в ту степь пошел?!
  • Как настроить связь "один ко многим" между таблицами в MySQL?

    @Pios88 Автор вопроса
    Ок. Есть вот такая модель book:
    <?php
    namespace app\models;
    use yii\db\ActiveRecord;
    use app\models\author;
    
    class Book extends ActiveRecord
    {
        public static function tableName()
        {
           return 'book';
        }
    
        public static function primaryKey()
        {
            return ['id'];
        }
    
        public function getAuthor()
        {
            return $this->hasOne(Author::className(), ['id' => 'author_id']);
        }
    }

    И тут все выводится и работает.
    А вот модель author:
    <?php
    namespace app\models;
    use yii\db\ActiveRecord;
    use app\models\book;
    
    class Author extends ActiveRecord
    {
        public static function tableName()
        {
           return 'author';
        }
    
        public static function primaryKey()
        {
            return ['id'];
        }
        
        public function getBook()
        {
            return $this->hasMany(Book::className(), ['id' => 'author_id']);
        }
    }

    И вот тут я не уверен верно ли все написал, потому что эти данные никуда не выводились - это раз. И второй момент, это то, что по заданию требуется, кроме всего прочего в админке вывести количество книг у каждого автора. И вот это сделать у меня никак не получается. Потому я и стал копать все ли с базой верно сделал. А-то 100500 способов уже использовал и не знаю как решить задачу. А с учетом того, что я в этом деле - дуб-дерево, только и осталось, что за советами к знающим людям идти:)
  • Как настроить связь "один ко многим" между таблицами в MySQL?

    @Pios88 Автор вопроса
    Я выполняю задачу на Yii2 и некоторые функции автоматически считывают связи в базе, что позволяет просто в 2 строчки решать некоторые задачи, там не нужно писать SQL-запросы. Но это не будет работать, если связи не настроить. А через phpmyadmin делал, потому что всемогущий гугл подсказал такой способ и для связи "много к одному" это отлично сработало, а для "один ко многим" простой инструкции не нашел. В SQL я не разбираюсь, потому и спрашиваю.
  • Как настроить связи между моделями в Yii2?

    @Pios88 Автор вопроса
    С моим-то нулевым знанием матбазы и весьма зачаточным пониманием принципов работы документация не всегда спасает при всем желании разобраться. Творчески применить такой прямой ответ удалось, заработало. После такого ответа, я теперь просто права не имею оставаться идиотом, буду эволюционировать с удвоенными усилиями. Спасибо огромное:)
  • Как настроить связи между моделями в Yii2?

    @Pios88 Автор вопроса
    Документация не спасла, по аналогии и 100500 найденных примеров сделать не получилось
  • Как создать сущности "авторы" и "книги" на Yii2?

    @Pios88 Автор вопроса
    Виталий, так лишь может показаться. Я вынужден задавать такой вопрос заведомо зная, что точным ответом на него будет практически выполнение задания, либо, как минимум, провести меня "за ручку" по всем этапам. Так как, перебрал уже массу документации, гайдов, примеров и... Из-за нулевых знаний 90% даже элементарных вещей не понимаю просто. Никто конечно за меня работу делать не обязан и даже за малую подсказку я благодарен. Видел пример с использованием hasMany, hasOne, эту часть понял. Синтаксис и логику PHP не понимаю почти совсем, по крупицам начинаю наконец въезжать. Загвоздка в том, что я не понимаю как создать сами модели для начала, тупо скопипастить похожий пример откуда я нашел, но, кроме части с hasMany, hasOne абсолютно ничего больше не понял, а это не дело. Хочу понять ЧТО вообще в файле модели нужно прописать, чтобы это можно было вообще назвать моделью.
    В любом случае, спасибо за ссылку! Большую часть из этого я уже читал (по прежнему большая часть как китайский язык для меня), но кое-что тут изложено удачно, и кое-что важное для себя нашел. Спасибо!