我有两个数据库表=>mobile_phones
,mobile_users
mobile_phones
的架构
-
phone_id(主键,auto_increment)
-
phone_name(varchar(150))
-
phone_mode(int(11))
mobile_users
的架构
-
user_id(主键,auto_increment)
-
用户名(varchar(150))
-
mobile_phone_id(引用mobile_phones(phone_id)的外键)
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");
}
}
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");
}
}
我试图在MobileUser
和MobilePhone
模型之间建立一对一的关系,但没有实现。以下是我在控制器操作中的代码-
public function query()
{
$getUsername = MobilePhone::find(1)->username;
echo $getUsername;
}
当我做var_dump()
时,上面的代码给了我NULL
我确实在SO上检查了类似的问题,他们使用了with()
(但这不是必要的)。我指的是Laravel 5.2文档,它们指出我们可以使用Eloquent的动态属性访问另一个关系中的关联记录。该文档的链接在这里
请帮忙!!
您需要调用模型的函数,因此执行以下
public function query()
{
$getUsername = MobilePhone::find(1)->mobileusers;
echo $getUsername->username;
}
执行此操作时:
public function query()
{
$getUsername = MobilePhone::find(1)->username;
echo $getUsername;
}
您试图访问MobilePhone
编号中的username
属性,这是不正确的。
试试这个:
public function query()
{
$getUsername = MobilePhone::find(1)->mobileUser->username;
echo $getUsername;
}
此外,我鼓励您使用with
语句,因为它将预加载所需的所有依赖项(意味着一个查询),而不是急于加载它(许多查询)
类似这样的东西:
public function query()
{
$getUsername = MobilePhone::find(1)->mobileUser;
echo $getUsername->username;
}