我在控制器中有以下方法
public function store(Request $request)
{
$site = Site::create([
"path" => $request->path,
"site_link" => $request->link,
]);
if ($request->features) {
$features = explode(',', $request->features);
foreach ($features as $feature) {
$site->features()->save(SiteFeature::create(["feature" => $feature]));
}
}
return response()->json($site, 201);
}
站点模型有这种方法
public function features()
{
return $this->hasMany('App\SiteFeature');
}
这是我的 $fillable
属性 SiteFeature
protected $fillable = ['feature', 'site_id'];
由于某种原因,我得到下一个错误
local.ERROR:SQLSTATE [HY000]:常规错误:1364字段'site_id'没有默认值(SQL:插入到site_features(feature)值(fes)){“exception”:“[object](Illuminate \ Database \ QueryException(代码:HY000):SQLSTATE [HY000]:常规错误:1364字段'site_id'没有默认值(SQL:插入到site_features(feature)值(fes))
3 回答
Model::create
方法实际上在您的数据库中创建了一条记录,因为您没有指定所需的site_id
,所以它失败了,这就是您看到此错误的原因 .看起来像是为了保存站点的新
SiteFeature
,但是你失败了关系的save
方法 .您需要将尚未保存到数据库的
SiteFeature
的新实例传递给save方法:或者你可以使用关系的create方法来避免必须完全传入一个实例,你只需要提供以下属性:
试试这个
在你的模型
features
你建模
SiteFeature
不返回最后一个插入ID ...尝试
至于这部分:
如果上面的代码不起作用你可以这样做...