@frmax
человек

Получить данные с БД yii2 (activerecord)?

Привет, создал модель...с помощью генератора.
Не получается получить данные.

<?php

namespace app\models;

use Yii;

/**
 * This is the model class for table "{{%users}}".
 *
 * @property integer $id
 * @property string $login
 * @property string $password
 * @property string $last_login
 * @property string $name
 * @property string $lastname
 * @property integer $vk_id
 * @property string $datereg
 * @property string $sex
 * @property string $status
 * @property string $birthday
 * @property string $crop
 * @property integer $isactive
 * @property string $activation_code
 */
class Users extends \yii\db\ActiveRecord
{
    
    private $user;
    /**
     * Returns the static model of the specified AR class.
     * @param string $className active record class name.
     * @return Comments the static model class
     */
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
    
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return '{{%users}}';
    }
    
    /**
     * @return array primary key of the table
     **/     
    public static function primaryKey()
    {
        return array('id');
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['login', 'password', 'name', 'lastname', 'status', 'birthday', 'crop', 'isactive', 'activation_code'], 'required'],
            [['last_login', 'datereg', 'birthday'], 'safe'],
            [['vk_id', 'isactive'], 'integer'],
            [['sex', 'status', 'crop', 'activation_code'], 'string'],
            [['login', 'password'], 'string', 'max' => 40],
            [['name', 'lastname'], 'string', 'max' => 15]
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'login' => 'Login',
            'password' => 'Password',
            'last_login' => 'Last Login',
            'name' => 'Name',
            'lastname' => 'Lastname',
            'vk_id' => 'Vk ID',
            'datereg' => 'Datereg',
            'sex' => 'Sex',
            'status' => 'Status',
            'birthday' => 'Birthday',
            'crop' => 'Crop',
            'isactive' => 'Isactive',
            'activation_code' => 'Activation Code',
        ];
    }
    
    public static function findByUsername($username)
    {
        $this->user = Users::find()->where(['name' => $username])->one();
            var_dump($this->user);
    }
}
  • Вопрос задан
  • 15484 просмотра
Пригласить эксперта
Ответы на вопрос 3
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
class Users extends

Это означает, что работаете Вы с таблицей users.
Где код контроллера?

В нем надо подключить:
use /app/models/Users

Работать с бд через объекты, например так:
$db = new users();
$res = $db->find()->All();
var_dump($res);

Вот ссылка на русском про работу с базами данных в yii2
Ответ написан
@suppot4545
В контроллере вызывайте функции модели

Подробное руководство
Ответ написан
@frmax Автор вопроса
человек
Сделал, понял в чем проблема.
Получается связка у меня не работает.

В по БД стало все понятно, но родилась новая проблема! :)

Я отсылаю с формы данные - ajax
singup = (function () { 
var name = $("#name").val();
var lastName = $("#last-name").val();
var psw = $("#password").val();
var email = $("#email").val();

    $.ajax({
        type: 'POST',
        url: "site/singup",
        data: {"name": name, "lastname": lastName, "psw":psw},
        error: function(e) {
          console.log(e);
        }
    });
});


Попадаю в контроллер в функцию >> singup
Тут получаю данные
public function actionSingup() {
        if (Yii::$app->request->isAjax) {
            $name = Yii::$app->request->post('name');
            $lastname = Yii::$app->request->post('lastName');
            $psw = Yii::$app->request->post('psw');
            $email = Yii::$app->request->post('email');
            
            $countries = Users::find()->where(array('email'=>$email))->orderBy('name')->all();
        var_dump($countries);
        }
    }


А ответ получаю

undefined: {undefined: {}, default: ["_events"]}

смотрю на него и плачу...

Почему такой ответ я разобрался, json_encode() забыл сделать...
Но вывел все равно пустой массив а данные в БД есть...вот и вопрос почему пустая строка на выводе???
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы