Ich bin neu in Laravel und damit bin zu kämpfen:Laravel 5.3 Eloquent Modell Beziehung nicht funktioniert, gibt NULL
Datenbank - MSSQL bestehenden DB-Schema nicht geändert werden kann als andere Software davon abhängt. (Nicht sicher, ob dies ein Problem oder nicht)
Modell/Tischaufbau: INFO_ALL Tabelle - ID ist Primärschlüssel PERSON Tabelle - ID foriegn Schlüssel ist
IDs Hex-Werte sind und ich merke, eloquent entfernt die 0x vom Anfang des Wertes und bin nicht sicher, ob dies die Beziehung zum Scheitern bringt oder nicht. Beispiel: In der DB I 0x123456789 in meiner zurück eloquent Daten sehen Ich sehe 123456789
Person Modell:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Person extends Model
{
protected $table = 'PERSON';
protected $primaryKey = 'ID';
public $incrementing = false;
public $timestamps = false;
public function info_all(){
return $this->belongsTo(Info_All::class, 'ID', 'ID');
}
}
Info Modell:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Info_All extends Model
{
protected $table = 'INFO_ALL';
protected $primaryKey = 'ID';
public $incrementing = false;
public $timestamps = false;
public function person(){
return $this->hasOne(Person::class, 'ID', 'ID');
}
}
Wie kann ich die Beziehung mich entschieden:
php artisan tinker
$person = App\Person::first();
$person->info;
NULL
php artisan tinker
$info= App\Info::first();
$info->person;
NULL
Ich weiß, dass diese Beziehung in der Datenbank existiert und ich kann sie manuell zusammen w Bei einer Abfrage wäre das Beziehungsfeature dieses Frameworks aber wirklich gut zu verstehen.
Beinahe neu bei Laravel gibt es ein paar Dinge, über die ich mir nicht sicher bin, wie wenn das dritte Argument in der Beziehung notwendig ist, da ich den $ primaryKey deklariere. Ich habe den $ primarykey im ersten Modell deklariert, weil ich angenommen habe, dass es eine Groß- und Kleinschreibung ist, und meine Tabelle hat ID nicht ID. Davon abgesehen bin ich seit ein paar Tagen festgefahren und habe das Gefühl, alles in jeder Kombination getestet zu haben.
Jede Hilfe wird geschätzt.
Es gibt mehr IDs in der Infotabelle als die Personentabelle. Info kann existieren (Benutzername und Privilegien) ohne eine Person (Bild, Name Adresse). Es ist ein wenig seltsam, aber es ist eine vorhandene Datenbank mit einer Abhängigkeit von vorhandener Software, die ich versuche, Funktionen mit einer Web-App hinzuzufügen. Also glaube ich, dass meine Beziehung korrekt ist. Die tatsächlichen Tabellennamen sind anscheinend zufällige Namen, also ändere ich sie in den Fragen in Person und Info, um es einfacher zu lesen, aber ich habe es vielleicht ein wenig confusuing gemacht. – vanamp
Wenn eine Tabelle eine FK hat, dann müssen Sie in Relation eine Methode 'goesTo' definieren. Bitte lesen Sie die [Dokumente] (https://laravel.com/docs/5.3/eloquent-relationships#one-to-one) für weitere Informationen. –
Ja, meine Beschreibung der Tabelle ist falsch, aber der Code hatte die richtigen Beziehungsinformationen. Info hasOne – vanamp