Yii2 Виджеты и база данных?
Тут наверное любой ответ будет спорным, но я думаю лучше поступать так:
в конфиге (или в базовом контролере) цепляемся за событие beforeAction:'on beforeAction' => function($event){
      Yii::$app->params['menuData'] = ArrayHelper::map(Imagemenumain::find()->all(),'id','title');
      //ArrayHelper тут для примера, хотел обозначить, что не стоит засовывать в params более чем нужно виджету. Там должен оказаться подготовленный массив с нужными данными
    },
в views/layout/main.php юзаем виджетecho SomeMyWidget::widget([
  'someWidgetParam' => Yii::$app->params['menuData'],
  'someWidgetParam2' => 'маракуя',
  'otmetitOtvetom' => true
]);
Виджет не должен знать о базе данных. Завтра сменится структура базы, а виджет продолжит работать. Так как он получает определенный массив данных. И при смене структуры БД вы просто смените метод формирования нужного массива, что бы передать в виджет. По той же причине его можно будет переиспользовать в других проектах.
ПыСы: Формирование массива вместе с запросом в базу наверное имеет смысл закешировать.
Фактически виджет - изолированный код, который должен сформировать html. То есть это часть вида. А в самом виде доступ к данным осуществляться не должен. Все данные, которые нужны для отображения должны передаваться из вне.