首页 > 解决方案 > 1364 字段 'schedule_id' 没有默认值

问题描述

未找到 schedule_id 字段

//控制器代码

public function store(Request $request)
    {

    $schedule = new menu;
    $days = new day;
    $schedule->scheduleName = $request->name;
    $schedule->sensor = $request->sensor;
    $schedule->start_time = $request->start_time;
    $schedule->end_time = $request->end_time;
    $schedule->timestamps = false;
    $schedule->s_daytime = $request->s_daytime;
    $schedule->e_daytime = $request->e_daytime;
    $days->days = $request->days;
    $days->timestamps = false;
    $days->save();
    $schedule->save();




    return view('store');

}

// 模型

class menu extends Model
{
    protected $table = "schedule";

    protected $fillable = [
    'scheduleName', 'start_time', 'end_time','sensor','s_daytime','e_daytime',

    ];
    public function days()
    {
         return $this->hasMany('App\day');
    }

}

标签: laravel-5

解决方案


您的问题是,您没有在哪里定义您的记录是您创建它们时menu的父级day

在这里你可以怎么做

$schedule = new menu;
$schedule->scheduleName = $request->name;
$schedule->sensor = $request->sensor;
$schedule->start_time = $request->start_time;
$schedule->end_time = $request->end_time;
$schedule->timestamps = false;
$schedule->s_daytime = $request->s_daytime;
$schedule->e_daytime = $request->e_daytime;
$schedule->save();

// First alternative
$day = $schedule->days()->create([
    'days' => $request->days,
    'timestamps' => false, // not sure if it's an attribute in your case
]);

// Second alternative
$day = new day;
$days->days = $request->days;
$days->schedule_id = $schedule->id; // notice this line
$days->timestamps = false;
$days->save();

我也相信你的关系days应该是,但我可能是错的,因为你已经将数据库名称设置为schedule

public function days()
{
    // By default, Laravel will expect `menu_id`
    return $this->hasMany('App\day', 'schedule_id');
}

提示(1):如果$timestamps是 public 属性并且它总是 false,你最好在你的模型中设置它。

提示(2):假设您做了提示(1),您可以像这样减少行数

$schedule = menu::create($request->only(
        'name', 'sensor', 'start_time', 'end_time', 's_daytime', 'e_daytime'
    ));

$day = $schedule->days()->create($request->only(
        'days'
    ));

推荐阅读