Ich habe 2 Datenbanktabellen =>mobile_phones
, mobile_users
Laravel One-to-One-Beziehung funktioniert nicht
Schema für mobile_phones
phone_id (Primärschlüssel, auto_increment)
phone_name (varchar (150))
phone_model (int (11))
Schema für mobile_users
User_id (Primärschlüssel, auto_increment)
Benutzername (VARCHAR (150))
mobile_phone_id (Fremdschlüssel Referenzierung mobile_phones (phone_id))
Modellklasse für mobile_phones
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class MobilePhone extends Model
{
protected $primaryKey = "phone_id";
public $timestamps = false;
protected $table = "mobile_phones";
protected $fillable = array("phone_name","phone_model");
public function mobileUser()
{
return $this->hasOne("MobileUser","mobile_phone_id");
}
}
Modellklasse für mobile_users
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class MobileUser extends Model
{
protected $primaryKey = "user_id";
public $timestamps = false;
protected $table = "mobile_users";
protected $fillable = array("username","mobile_phone_id");
public function mobilePhone()
{
return $this->belongsTo("MobilePhone","phone_id");
}
}
Ich versuche, Eins-zu-Eins-Beziehung zwischen MobileUser
und MobilePhone
Modelle zu schaffen, aber es ist nicht passiert. Im Folgenden finden Sie Aktion meinen Code in Kontrolleurs -
public function query()
{
$getUsername = MobilePhone::find(1)->username;
echo $getUsername;
}
Der obige Code gibt NULL
mich, wenn ich ein var_dump()
tun habe ich auf SO ähnliche Fragen überprüfen und sie verwendet with()
(aber das ist nicht notwendig). Ich beziehe mich auf Dokumente von Laravel 5.2 und sie geben an, dass wir in einer anderen Beziehung mit den dynamischen Eigenschaften von Eloquent auf relate-Datensätze zugreifen können. Link zu diesem Dokument ist here
Bitte Hilfe !!
Es sieht aus wie mobile_users hat einen Fremdschlüssel zu Mobile_phones, aber nicht umgekehrt. Wenn Sie also auf den Benutzernamen zugreifen möchten, müssen Sie die MobileUser-Klasse und nicht die MobilePhone-Klasse verwenden. –
Wenn ich die 'MobilePhone' Klasse nicht verwende und direkt die' MobileUser' Klasse verwende, dann war es nicht nötig die Beziehung zwischen den 2 Modellen zu definieren. Laut der Dokumentation führt 'MobilePhone :: find (1) -> username 'intern den Primärschlüssel - Foreign Key mapping aus und erhält den Benutzernamen, der ein Mobiltelefon mit der ID 1 hat. –
Sie wollen Handy des jeweiligen Benutzers oder umgekehrt? – Drudge