我有这个问题,laravel eloquent似乎在数据库中创建条目,但除'id'以外的属性为空。
这是我的实体类:
<?php
class StockEntity extends Eloquent
{
public $name;
public $symbol;
public $currency;
protected $table = 'stocks';
public $timestamps = false;
protected $guarded = array();
protected $fillable = array('name', 'symbol', 'currency');
public function __construct($sName, $sSymbol, $sCurrency)
{
$this->name = $sName;
$this->symbol = $sSymbol;
$this->currency = $sCurrency;
}
}
?>
在我的代码中,我这样做是为了保存数据到数据库
$sEnt = new StockEntity("Bank", "BDO", "USD"); //this is just made up data
$sEnt->save();
当我执行代码时,它正在数据库中创建条目,但具有空值列。我不能张贴截图,但这是如何db看起来像:
# id | name | symbol | currency
1 | | |
2 | | |
3 | | |
我花了好几个小时还是没弄明白。顺便说一下,这是我第一次使用laravel和雄辩ORM。
谢谢你的帮助!
你不应该在你的模型中列出你的表列作为属性(即不要在你的模型中声明名称,符号和货币)。
而不是在构造函数中赋值,使用::create()
或->fill()
。
// This will insert to database and return the object with ID
$stock = StockEntity::create(array(
'name' => 'Name',
'symbol' => 'Symbol',
'currency' => 'Australian Dollar'
));
// This will fill the model object, but not yet saved to database.
$stock = new Stock;
$stock->fill(array(
'name' => 'Name',
'symbol' => 'Symbol',
'currency' => 'Australian Dollar'
));
$stock->save();
让Eloquent完成它的工作,不要强迫它:
class StockEntity extends Eloquent {
protected $table = 'stocks';
public $timestamps = false;
protected $guarded = array();
protected $fillable = array('name', 'symbol', 'currency');
}
和使用
调用$sEnt = StockEntity::create(array(
'name' => 'Bank',
'symbol' => 'BDO',
'currency' => 'USD',
));
学习如何使用ORM