This forum has moved to a new location and is in read-only mode. Please visit talk.octobercms.com to access the new location.
Good day! When I try to save a project in the admin panel, a window pops up with an error:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (zen
.projects
, CONSTRAINT projects_category_id2_foreign
FOREIGN KEY (category_id2
) REFERENCES categories
(id
)) (SQL: update projects
set subtitle_full
= , category_id
= 3, category_id2
= NULL, category_id3
= NULL, category_id4
= NULL, category_id5
= NULL, link_comment
= , updated_at
= 2019-11-30 18:55:03 where id
= 23)" on line 624 of D:\OSPanel\domains\zendesign\vendor\laravel\framework\src\Illuminate\Database\Connection.php
In the project table there are fields "category_id", category_id2, etc., which can be NULL. These fields are associated with a categories table. As far as I understand, in addition to communication in the database, it is necessary to register the dependence in the model:
public $belongsTo = [
'category' => Category::class
];
Or is it not necessary? I'm still digging...
fields.aml:
category_id: label: Category 1 type: dropdown span: left
category_id2: label: Category 2 type: dropdown span: right #placeholder: '-'
If you uncomment this parameter, an empty value is passed instead of NULL, so I added the getCategoryId2Options (etc.) function to the Project class for getting list of available categories:
public function getCategoryId2Options()
{
$parents = Category::whereNull('parent_id')->get();
$result = [];
$result['NULL'] = '-';
foreach ($parents as $p) {
foreach ($p->children as $c) {
$result[$c->id] = $p->name . ' -> ' . $c->name;
}
}
return $result;
}
But it didn’t work, giving the error above. All I want is that in the admin panel of the project there are several fields for choosing one or more categories.
Last updated
1-1 of 1