Php Laravel:荷载关系和特定柱
我有两个表Php Laravel:荷载关系和特定柱,php,mysql,laravel-5,Php,Mysql,Laravel 5,我有两个表User和Car。一个用户可能有一辆车 我有一个这样的关系集: public function car() { return $this->hasOne('App\Car'); } User :: Select("*")->with("car")->get(); 我想用一辆车去接用户,但只选择用户的名称,以及车的颜色 如果我尝试 App\User::with('car:color')->select('name')->first()->t
User
和Car
。一个用户可能有一辆车
我有一个这样的关系集:
public function car()
{
return $this->hasOne('App\Car');
}
User :: Select("*")->with("car")->get();
我想用一辆车去接用户,但只选择用户的名称
,以及车的颜色
如果我尝试
App\User::with('car:color')->select('name')->first()->toArray();
那我就不懂车的颜色了。这就是结果:
array:1 [▼
0 => array:2 [▼
"name" => "Max Mustermann"
"car" => []
]
]
是否可以只获取用户的姓名和汽车的颜色?由于
user
表没有color
列,因此失败。您必须访问关系才能获得颜色
$user = User::has('car')->first();
print $user->car->color;
好吧,你不可能只找到两个有着雄辩关系的领域。实现这一点的一种方法是使用查询生成器:
DB::table('users')
->join('cars', 'users.id', '=', 'cars.user_id')
->select('users.name', 'cars.color')
->get();
它失败,因为
用户
表没有颜色
列。您必须访问关系才能获得颜色
$user = User::has('car')->first();
print $user->car->color;
好吧,你不可能只找到两个有着雄辩关系的领域。实现这一点的一种方法是使用查询生成器:
DB::table('users')
->join('cars', 'users.id', '=', 'cars.user_id')
->select('users.name', 'cars.color')
->get();
您可以这样尝试:
public function car()
{
return $this->hasOne('App\Car');
}
User :: Select("*")->with("car")->get();
您可以这样尝试:
public function car()
{
return $this->hasOne('App\Car');
}
User :: Select("*")->with("car")->get();
这是正确的方法
$users = User::with('car.color')->select('name')->get();
然后可以将它们显示为:
foreach($users as $user){
echo $user->name . " owns a " . $user->car->color . " car.";
}
这是正确的方法
$users = User::with('car.color')->select('name')->get();
然后可以将它们显示为:
foreach($users as $user){
echo $user->name . " owns a " . $user->car->color . " car.";
}
这将只从用户表中获取第一行。我知道您的方法可行,但这将返回用户的所有恶魔。我只希望我的用户对象有两个属性,在这种情况下,只有
$user->name
和$user->car->color
不需要从两个表中加载所有其他字段。这将只从用户表中获取第一行。我知道您的方法可行,但这将返回用户的所有恶魔。我只希望我的用户对象有两个属性,在这种情况下,只有$user->name
和$user->car->color
不需要从两个表中加载所有其他字段。如果我这样做,那么$user->car color
为空如果我这样做,那么$user->car color
为空谢谢,你的方法有效。但是是否有一个查询使得返回的用户对象只有两个属性,在本例中只有$user->name
和$user->car->color
?我的应用程序不需要从这两个表中加载所有其他字段。当我编写原始SQL命令时,我从未使用过SELECT*FROM
。。。获得speed@Adam,我很高兴你在我的答案的帮助下得到了一个解决方案,如果你接受这个答案并投赞成票就好了。至于您对速度的关注,我想说,这是ORM,它不会像使用select*fromtable
从表中获取数据那样需要时间,所以不用担心。这没什么大不了的。谢谢,你的方法很有效。但是是否有一个查询使得返回的用户对象只有两个属性,在本例中只有$user->name
和$user->car->color
?我的应用程序不需要从这两个表中加载所有其他字段。当我编写原始SQL命令时,我从未使用过SELECT*FROM
。。。获得speed@Adam,我很高兴你在我的答案的帮助下得到了一个解决方案,如果你接受这个答案并投赞成票就好了。至于您对速度的关注,我想说,这是ORM,它不会像使用select*fromtable
从表中获取数据那样需要时间,所以不用担心。这不会有太大的区别。