次の MySQL テーブルがあるとします。
CREATE TABLE backend_users(
id INT NOT NULL AUTO_INCREMENT,
userName VARCHAR(30) UNIQUE NOT NULL,
password VARCHAR(40) NOT NULL,
salt VARCHAR(16) NOT NULL,
needsNewPassword TINYINT(1) UNSIGNED NOT NULL,
forgotPasswordKey VARCHAR(8) NULL,
fullName VARCHAR(50) NOT NULL,
email VARCHAR(255) NOT NULL,
roleType INT NOT NULL,
enabled TINYINT(1) UNSIGNED NOT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
PRIMARY KEY (id)
) CHARACTER SET utf8 COLLATE utf8_general_ci;
Eloquent モデルを使用して、上記の列名を使用してテーブルに新しい行を記録するにはどうすればよいですか? ドキュメントで説明されているように試してみると:
$user = User::create(
array(
'userName' => 'emmanuel',
'password' => $encryptedPassword,
'salt' => $salt,
'needsNewPassword' => 0,
'fullName' => 'Emmanuel Figuerola',
'email' => 'somemail@gmail.com',
'roleType' => 0,
'enabled' => 1
)
);
次のエラーが表示されます。
例外: SQLSTATE[42S22]: 列が見つかりません: 1054 不明な列 'user_name' が 'フィールド リスト' にあります (SQL: insert into
backend_users
(user_name
,password
,salt
,needs_new_password
,full_name
,role_type
, ?enabled
, ?, ?, ?, ?, ?, ?, ?, ?)) (バインディング: 配列 ( 0 => 'emmanuel', 1 => '70b104a42c4ac5e79ca7c150bf872b383e0eedca', 2 => '5514512bffb33f4a', 3 => 0, 4 => 'Emmanuel Figuerola', 5 => 'somemail@gmail.com', 6 => 0, 7 => 1, 8 => DateTime::__set_state(array( 'date' => '2013-02-26 00:20:03', ' timezone_type' => 3, 'timezone' => 'UTC', )), 9 => DateTime::__set_state(array( 'date' => '2013-02-26 00:20:03', 'timezone_type' => 3, 'timezone' => 'UTC', )), ))updated_at
created_at
そのすべてを読みたくない場合は、単にEloquentが必要な列名を使用していることを意味し、MY列名ではなく、それぞれの名前と値を明確に指定した場合でも.
私は何をすべきか?可能であれば、「列の名前を変更してください」と言わないでください。これは、多くの列の名前を変更することを意味するためです (私は多くのテーブルを持っています)。その上、列名の特定の命名規則についてはどこにも読んでいませんでした。