ホームページ  >  記事  >  バックエンド開発  >  Yii ActiveRecord で保存を実行すると、データベースに列が追加されるのにデータが追加されないのはなぜですか?

Yii ActiveRecord で保存を実行すると、データベースに列が追加されるのにデータが追加されないのはなぜですか?

WBOY
WBOYオリジナル
2016-06-20 12:44:42844ブラウズ

環境:Windows 10 + wampservice + Yii2.0.6
開発ツール:phpstorm 9.0.2

Yii ActiveRecordで保存を実行するとデータベースにカラムが追加されるのですが、なぜデータがない?
公式マニュアルとは何ですか? なぜ質問が多いのですか?何度か試してみましたがダメでしょうか?それとも何か問題があるのでしょうか?
モデルを構築しました
namespace appmodels;
use yiidbActiveRecord;
class user extends ActiveRecord
public $username

パブリック静的関数モデル($className=__CLASS__)
{
returnparent::model($className);
}

パブリック静的関数 tableName()
{
Return '{{user}}';
}
コントローラで実行
$user = new user();
$user->username = 'hello'; ->password = 'world';
$user->save();
データベースは列を追加しますが、ユーザー名とパスワードは空で、前の ID のみです。データベース内のスキーマは次のとおりです書かれた。
id int(10) unsigned not null 主キー auto_increment。
ブラウザで
localhost:80/yii/web/index.php?r=index/create を実行します。実行後にエラーは報告されませんが、データベースを確認すると列が追加されますが、ユーザー名とパスワードは空白です。
この問題が発生した場合はどうすればよいですか?


ディスカッションへの返信 (解決策)
Print sql insert into の構文を確認してください。テーブルの構造も確認する必要があります。

この種のデバッグ問題が発生した場合は、まず print_r($user) を使用して $user が必要な結果であるかどうかを確認する必要があります。その中の public 属性フィールドが正しい場合は、それが正しいかどうかを確認する必要があります。データベース内の結果と一致しています。テーブル名とテーブルのフィールドはまったく同じです。

SQL を出力して、insert into の構文を確認します。テーブルの構造も確認する必要があります。



この種のデバッグ問題が発生した場合は、まず print_r($user) を使用して、$user が必要な結果であるかどうか、また、その中のパブリック属性 フィールドが正しい場合は、それがデータベース内のテーブル名およびテーブル フィールドとまったく同じであるかどうかを確認する必要があります。

印刷時にエラーは発生しません。解決策は、AR 派生クラスでテーブルの属性を定義するのではなく、save を直接使用してテーブルを正しく保存することです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。