2015-02-19 3 views
3

Я знаю, что это может показаться тривиальным, но я действительно не могу понять это. Я начинаю разрабатывать приложение базы данных, используя Yii Framework и MySQL. Я пробовал выполнить простой базовый учебник: http://www.yiiframework.com/doc-2.0/guide-start-databases.html , но я использовал свой собственный стол «Супермаркеты». Я получаю эту ошибку:Yii Framework Неизвестный исключение свойств

Неизвестное свойство - YII \ базы \ UnknownPropertyException Получение неизвестное свойство: приложение \ модели \ Супермаркеты :: Имя

Очевидно, что метод Get («имя») вызывает эта ошибка, но я не знаю, как это исправить.

Это мой код:

... модель/supermarkets.php:

<?php 

namespace app\models; 

use yii\db\ActiveRecord; 

class Supermarkets extends ActiveRecord 
{ 



} 

... Контроллеры/SupermarketsController.php:

<?php 

namespace app\controllers; 

use yii\web\Controller; 
use yii\data\Pagination; 
use app\models\Supermarkets; 

class SupermarketsController extends Controller 
{ 
    public function actionIndex() 
    { 
     $query = Supermarkets::find(); 

     $pagination = new Pagination([ 
      'defaultPageSize' => 5, 
      'totalCount' => $query->count(), 
     ]); 

     $supermarkets = $query->orderBy('name') 
      ->offset($pagination->offset) 
      ->limit($pagination->limit) 
      ->all(); 

     return $this->render('index', [ 
      'supermarkets' => $supermarkets, 
      'pagination' => $pagination, 
     ]); 
    } 
} 

... просмотры/Супермаркеты/index.php:

<?php 
use yii\helpers\Html; 
use yii\widgets\LinkPager; 
?> 
<h1>Supermarkets</h1> 
<ul> 
<?php foreach ($supermarkets as $supermarket): ?> 
    <li> 
     <?= $supermarket->name?> 
     <?= $supermarket->location ?> 
     <?= $supermarket->telephone ?> 
     <?= $supermarket->fax ?> 
     <?= $supermarket->website ?> 
    </li> 
<?php endforeach; ?> 
</ul> 

<?= LinkPager::widget(['pagination' => $pagination]) ?> 

Supermarkets.db:

CREATE TABLE IF NOT EXISTS `supermarkets` (
    `Name` varchar(71) NOT NULL, 
    `Location` varchar(191) DEFAULT NULL, 
    `Telephone` varchar(68) DEFAULT NULL, 
    `Fax` varchar(29) DEFAULT NULL, 
    `Website` varchar(24) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Любые предложения, пожалуйста?

+0

Вы можете добавить заголовки столбцов в таблицу "Супермаркеты"? – topher

+0

Не могли бы вы показать таблицу db, которая соответствует сущности супермаркетов? – DonCallisto

+0

Я отредактировал мой вопрос и добавил код для таблицы sql. – user3640056

ответ

1

Может быть, вы потеряете в модели Supermarkets:

/** 
    * @inheritdoc 
    */ 
    public static function tableName() 
    { 
     return 'Supermarkets'; 
    } 

Если не установлен метод, имя-таблицы по умолчанию будет supermarkets. Потому что в yii\db\ActiveRecord наборе:

public static function tableName() 
    { 
     return '{{%' . Inflector::camel2id(StringHelper::basename(get_called_class()), '_') . '}}'; 
    } 

EDIT

Используйте это удалить из модели

/** 
     * @inheritdoc 
     */ 
     public static function tableName() 
     { 
      return 'Supermarkets'; 
     } 

И использовать

<?= $supermarket->Name?> 
     <?= $supermarket->Location ?> 
     <?= $supermarket->Telephone ?> 
     <?= $supermarket->Fax ?> 
     <?= $supermarket->Website ?> 

Или лучший путь. Используйте свой первый код. И измените столбцы -> установите маленькую первую букву. Мне нравится

CREATE TABLE IF NOT EXISTS `supermarkets` (
    `name` varchar(71) NOT NULL, 
    `location` varchar(191) DEFAULT NULL, 
    `telephone` varchar(68) DEFAULT NULL, 
    `fax` varchar(29) DEFAULT NULL, 
    `website` varchar(24) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 
+0

Спасибо, я добавил этот код к моему supermarkets.php, но я все еще получаю ошибку. – user3640056

+0

См., Я редактирую ответ –

+0

Спасибо :) это сработало! – user3640056