Проблемы при использовании модели таблицы БД

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
TolikRx
Сообщения: 16
Зарегистрирован: 2015.02.19, 12:57

Проблемы при использовании модели таблицы БД

Сообщение TolikRx »

С помощью gii создал модель таблицы БД. В папке models появился файл bdUsers.php
Он содержит строки:

Код: Выделить всё

namespace app\models;
use Yii;
class bdUsers extends \yii\db\ActiveRecord
{
    public static function tableName(){...}
    public function rules(){...}
    public function attributeLabels(){...}
    
    // создал свои функции
    public function myFunc1(){
       return $this->myFunc2();
    }
    public function myFunc2(){
       return static::count();
    }
}
Хотелось бы при вызове myFunc1() на выходе получить количество записей всей таблицы.

На странице подключил модельку:

Код: Выделить всё

use app\models\bdUsers;
И попытался вызвать функцию:

Код: Выделить всё

echo bdUsers::myFunc1();
Выдает ошибку: "Calling unknown method: yii\web\View::myFunc2()"

Что я сделал не так ?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Проблемы при использовании модели таблицы БД

Сообщение ElisDN »

Не изучили разницу между простым и статическим методом.
TolikRx
Сообщения: 16
Зарегистрирован: 2015.02.19, 12:57

Re: Проблемы при использовании модели таблицы БД

Сообщение TolikRx »

Как правильно написать методы в данном случае ?
Demon_id
Сообщения: 421
Зарегистрирован: 2011.10.29, 00:13

Re: Проблемы при использовании модели таблицы БД

Сообщение Demon_id »

Код: Выделить всё

    public static function myFunc1(){
       return static::myFunc2();
    }
    public static function myFunc2(){
       return static::count();
    }
и бегом читать основы ооп в php.
TolikRx
Сообщения: 16
Зарегистрирован: 2015.02.19, 12:57

Re: Проблемы при использовании модели таблицы БД

Сообщение TolikRx »

Поправил. Смысл понял.
Правда теперь ругается на count(): Call to undefined method app\models\bdUsers::count()

Как получить количество записей в таблице ?
TolikRx
Сообщения: 16
Зарегистрирован: 2015.02.19, 12:57

Re: Проблемы при использовании модели таблицы БД

Сообщение TolikRx »

Сделал так:

Код: Выделить всё

public static function myFunc2(){
       return static::find()->count();
    } 
Вывел количество записей верно. Оптимально ли я написал код ?
TolikRx
Сообщения: 16
Зарегистрирован: 2015.02.19, 12:57

Re: Проблемы при использовании модели таблицы БД

Сообщение TolikRx »

Еще расширил функционал:

Код: Выделить всё

    public static function myFunc1(){
       return ['count' => static::myFunc2(), 'record' => static::myFunc3(50,60)];
    }
    public static function myFunc2(){
       return static::find()->count();
    }
    public static function myFunc3($limit1, $limit2){
       return "Тут код для выборки с $limit1 по $limit2 записей";
    }
 
Функция myFunc3 должна возвращать из таблицы записи с $limit1 по $limit2 - как такую выборку сделать ?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Проблемы при использовании модели таблицы БД

Сообщение ElisDN »

Код: Выделить всё

return static::find()->offset($limit1)->limit($limit2 - $limit1)->all(); 
TolikRx
Сообщения: 16
Зарегистрирован: 2015.02.19, 12:57

Re: Проблемы при использовании модели таблицы БД

Сообщение TolikRx »

Спасибо! Все получилось.
Ответить