делаете join через связь и указываете в связи лимит
Category model:
public function getProduct(){
return $this->hasMany(Product::classname,['cat_id'=>'id']);
}
public function getProductWithLimit(){
return $this->getProduct()->limit(1);
}
Где-то
$cat = Category::find()->joinWith('productWithLimit')->one();
Как вариант можно сделать связь с hasOne, а не hasMany что бы получить 1 объект, а не массив с одним объектом
public function getProductWithLimit(){
return $this->hasOne(Product::classname,['cat_id'=>'id']);
}
Может есть и более правильный вариант, но из Вашего вопроса не совсем понятно, что именно Вам надо и для чего.