Yii Framework Unknown Property Exception
May be you lose in model Supermarkets
:
/**
* @inheritdoc
*/
public static function tableName()
{
return 'Supermarkets';
}
If you not set method, default table-name will be supermarkets
. Because in yii\db\ActiveRecord
set:
public static function tableName()
{
return '{{%' . Inflector::camel2id(StringHelper::basename(get_called_class()), '_') . '}}';
}
EDIT
Use delete this from your model
/**
* @inheritdoc
*/
public static function tableName()
{
return 'Supermarkets';
}
And use
<?= $supermarket->Name?>
<?= $supermarket->Location ?>
<?= $supermarket->Telephone ?>
<?= $supermarket->Fax ?>
<?= $supermarket->Website ?>
Or better way. Use your first code. And change columns -> set small first letter. Like that
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;
user3640056
Updated on February 19, 2020Comments
-
user3640056 about 4 years
I know this might seem trivial but I really can't figure it out. I'm starting to develop a database application using Yii Framework and MySQL. I tried following the simple basic tutorial : http://www.yiiframework.com/doc-2.0/guide-start-databases.html , but I used my own table "Supermarkets". I'm getting this error:
Unknown Property – yii\base\UnknownPropertyException Getting unknown property: app\models\Supermarkets::name
It's obvious that the method get ('name') is causing this error, but I don't know how to fix this.
This is my code:
...models/supermarkets.php:
<?php namespace app\models; use yii\db\ActiveRecord; class Supermarkets extends ActiveRecord { }
...controllers/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, ]); } }
...views/Supermarkets/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;
Any suggestions please?