Diese Frage already been asked many times hat, wie ich alle durch die Antworten ging, aber keiner löst den Fehler Ich erhalte.Laravel 5.2 - Integrität Einschränkungsverletzung: 1452 Kann nicht hinzugefügt werden oder ein Kind Zeile aktualisieren: ein Fremdschlüssel nicht
Ich verwende Laravel 5.2
Ich habe 2 Tische - Kleinanzeigen und Kategorien. Wenn ich eine Anzeige erstellen möchten, erhalte ich die Fehlermeldung:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
myclassified
.classifieds
, CONSTRAINTclassifieds_category_id_foreign
FOREIGN KEY (category_id
) REFERENCEScategories
(id
))
Migration Dateien wie folgt definiert:
für classifieds
Tabelle:
public function up()
{
Schema::create('classifieds', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('description');
$table->string('price');
$table->timestamps();
});
}
public function down()
{
Schema::drop('classifieds');
}
für categories
Tabelle:
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
public function down()
{
Schema::drop('categories');
}
und den Fremdschlüssel hinzufügen,
public function up()
{
Schema::table('classifieds', function(Blueprint $table) {
$table->integer('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories');
});
}
public function down()
{
Schema::table('classifieds', function(Blueprint $table) {
$table->dropForeign('classifieds_category_id_foreign');
});
}
Die Modelle sind:
Classified
Modell:
class Classified extends Model
{
protected $table = 'classifieds';
protected $fillable = ['title', 'category_id', 'description', 'price'];
protected $hidden = [];
public function category(){
return $this->belongsTo('App\Category');
}
}
und das Category
Modell:
class Category extends Model
{
protected $table = 'categories';
protected $fillable = ['name'];
protected $hidden = [];
public function classifieds(){
return $this->hasMany('App\Classified');
}
}
und der Speicher-Methode in der Steuerung wie folgt definiert ist:
public function store(Request $request)
{
$title = $request->input('title');
$category_id = $request->input('category_id');
$description = $request->input('description');
$price = $request->input('price');
Classified::create([
'title' => $this->title,
'category_id' => $this->category_id,
'description' => $this->description,
'price' => $this->price
]);
return \Redirect::route('classifieds.index')
->with('message', 'Ad created');
}
Was ist mein Fehler bei der Einrichtung der Datenbank?
Hallo. Ich erhalte immer noch den Fehler 'Integrity constraint violation': SQLSTATE [23000]: Integritätseinschränkungsverletzung: 1452 Hinzufügen oder Aktualisieren einer untergeordneten Zeile nicht möglich: Eine Fremdschlüsseleinschränkung schlägt fehl ('myclassified'.classifieds', CONSTRAINT' classifieds_category_id_foreign' FOREIGN) KEY ('category_id') REFERENCES' categories' ('id') ON DELETE SET NULL) – byteseeker
Haben Sie die Migration erneut ausgeführt? – geckob
Ja. Ich habe den Befehl 'php artisan migrate: refresh' ausgeführt – byteseeker