Laravel Eloquent firstOrCreate 无法正常工作
Laravel Eloquent firstOrCreate doesn't work properly
我已经习惯了,但是今天这个问题让我很虚弱..;;
class Market {
// ..
public function ttl()
{
return $this->ttlRelation()->firstOrCreate(
['market_id' => $this->id],
['tier' => 0, 'direction'=>0]
);
}
}
Market
型号有一个TTL型号。我知道 firstOrCreate
方法找到一个项目作为第一个给定的数组,如果它不存在创建一个新的作为持久性,returns 它。
此外,它的质量分配所以我在 ttl 模型上填写了 $fillable
属性..
class TradingTacticalLayer extends Model
{
public $timestamps = false;
protected $fillable = ['direction', 'tier'];
}
..我收到 SQLSTATE[HY000]: General error: 1364 Field 'direction' doesn't have a default value (SQL: insert into "trading_tactical_layer_test" ("tier", "market_id") values (0, 1))
消息。我不明白为什么这种方法不能以正确的方式填充插入字段列表。我预计,如果我将 $fillable
属性 编辑为 ['direction']
,SQL 将内爆(“方向”)作为插入字段,但它不会。
一般来说,根据我的经验,我只是将这些字段设置为可为空或手动设置默认值。这个时候我想知道为什么会出现这种奇怪的现象,我做错了什么。
嗯,大概,optimize:clear
解决问题。
我仍然不知道是什么导致了这个错误,但是如果您在 $fillable
属性 和插入字段列表之间遇到不匹配,无论如何 optimize:clear
是一个选项..
我已经习惯了,但是今天这个问题让我很虚弱..;;
class Market {
// ..
public function ttl()
{
return $this->ttlRelation()->firstOrCreate(
['market_id' => $this->id],
['tier' => 0, 'direction'=>0]
);
}
}
Market
型号有一个TTL型号。我知道 firstOrCreate
方法找到一个项目作为第一个给定的数组,如果它不存在创建一个新的作为持久性,returns 它。
此外,它的质量分配所以我在 ttl 模型上填写了 $fillable
属性..
class TradingTacticalLayer extends Model
{
public $timestamps = false;
protected $fillable = ['direction', 'tier'];
}
..我收到 SQLSTATE[HY000]: General error: 1364 Field 'direction' doesn't have a default value (SQL: insert into "trading_tactical_layer_test" ("tier", "market_id") values (0, 1))
消息。我不明白为什么这种方法不能以正确的方式填充插入字段列表。我预计,如果我将 $fillable
属性 编辑为 ['direction']
,SQL 将内爆(“方向”)作为插入字段,但它不会。
一般来说,根据我的经验,我只是将这些字段设置为可为空或手动设置默认值。这个时候我想知道为什么会出现这种奇怪的现象,我做错了什么。
嗯,大概,optimize:clear
解决问题。
我仍然不知道是什么导致了这个错误,但是如果您在 $fillable
属性 和插入字段列表之间遇到不匹配,无论如何 optimize:clear
是一个选项..