gpt4 book ai didi

mysql - hasMany 并属于 Laravel

转载 作者:行者123 更新时间:2023-11-29 19:01:01 25 4
gpt4 key购买 nike

我有 3 个模型。用户、通知和 Lmo 通知。该关系是用户有许多通知并且通知有许多LmoNotification。

为了插入通知和 lmoNotification,我创建了两个模型和 Controller ,它们有单独的数据库表。

我的问题是,当我将通知输入数据库时​​,它插入数据时,将 user_id 作为外键,没有任何问题。但是接下来当我尝试输入 lmonotification 时,它会出现错误。

通知模型:

class Notification extends Model
{

protected $table = "notifications";


protected $fillable = [
'unit_code', 'unit_name', 'project_title', 'project_ref_number', 'storage_location', 'keeper_name', 'user_id',
];

public function user(){
return $this->belongsTo('App\User');
}

}

LmoNotification 模型

class AddLmoNotification extends Model
{

/**
* The attributes that are mass assignable.
*
* @var array
*/

protected $table = "lmo_notifications";

protected $fillable = [
'lmo_name', 'lmo_risk_level', 'lmo_quantity', 'lmo_volume', 'notification_id',
];

public function notification(){
return $this->belongsTo('App\Notification');
}

}

通知 Controller 创建通知

public function create(Request $request)
{
$notification = Notification::create([
'unit_code'=>$request->unit_code,
'unit_name'=>$request->unit_name,
'project_title'=>$request->project_title,
'project_ref_number'=>$request->project_ref_number,
'storage_location'=>$request->storage_location,
'keeper_name'=>$request->keeper_name,
'user_id'=>Auth::user()->id
]);

return redirect()-> route('show.lmo_form', $notification->id);

// return view('ApplicationForms.notifi', $notification);
}

Lmonotification Controller

 $notification = new Notification;

/*this loop is because im adding rows dynamically to the table*/
$count = count($request->input('lmo_name'));

for ($i=0; $i<$count; $i++){

$data = AddLmoNotification::create([
'lmo_name'=>$request->lmo_name[$i],
'lmo_risk_level'=>$request->lmo_risk_level[$i],
'lmo_quantity'=>$request->lmo_quantity[$i],
'lmo_volume'=>$request->lmo_volume[$i],
'notification_id'=>$notification->id
]);
return response($data);
}

//return response($notification);
return redirect()->route('show.go_to_notification');
}

web.php

Route::prefix('notification')->group(function(){
/*show notification main page*/
Route::get('/', 'HomeController@getNotificationPage')->name('show.go_to_notification');
/*route to lmo_notification_form*/
Route::get('/personal_information_notification_form', 'HomeController@getNotificationForm');
/*route to biohazardous material notification form*/
Route::get('/biohazardous_material_notification_form', 'HomeController@getotherNotificationForm')->name('show.biohazardous_material_notification_form');
/*submit lmo notification route*/
Route::post('/personal_information_notification_form/submit', 'NotificationController@create')->name('submit.personal_Info_Notification');
/*Rtoute to lmo form*/
Route::get('/personal_information_notification_form/add_lmo/{notification_id}', 'HomeController@getlmoNotificationForm')->name('show.lmo_form');
/*Route to submit lmo list for notification*/
Route::post('/personal_information_notification_form/add_lmo', 'LmoNotificationController@create')->name('submit.lmo_list');
});

通知表

Schema::create('notifications', function (Blueprint $table) {
$table->increments('id');

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');

$table->string('unit_code')->nullable();
$table->string('unit_name')->nullable();
$table->string('project_title')->nullable();
$table->string('project_ref_number')->nullable();
$table->string('storage_location');
$table->string('keeper_name');

$table->timestamps();


});

Lmo通知表

public function up()
{
Schema::create('lmo_notifications', function (Blueprint $table) {

$table->increments('id');


$table->integer('notification_id')->unsigned();
$table->foreign('notification_id')->references('id')->on('notifications')->onDelete('cascade')->onUpdate('cascade');


$table->string('lmo_name');
$table->string('lmo_risk_level');
$table->string('lmo_quantity');
$table->string('lmo_volume');

$table->timestamps();

});
}

通知表包含一些个人详细信息字段,lmonotification 包含产品列表。

错误消息指出

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'notification_id' cannot be null (SQL: insert into lmo_notifications (lmo_name, lmo_risk_level, lmo_quantity, lmo_volume, notification_id, updated_at, created_at) values (asd, medium, 2, 2, , 2017-05-09 22:35:15, 2017-05-09 22:35:15))

请帮忙。

最佳答案

您的关系设置没有任何问题。问题开始于您在实例化模型中设置新 AddLmoNotificationnotification_id 时:

$notification = 新通知;

请注意,只要 $notification 未持久保存到数据库:

$notification->save()

该通知不会有数据库分配给它的 ID,因此,访问其 id 属性将返回 null。因此,在创建任何依赖其外键字段的 id 属性的模型之前,您必须先保存 $notification 模型。

关于mysql - hasMany 并属于 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43880910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com