用户表中包含$("#username").keyup(function (e){
clearTimeout(x_timer);
var user_name = $(this).val();
if(user_name.length >= 6){ //Validate number of characters here
x_timer = setTimeout(function(){
check_username_ajax(user_name);
}, 1000);
}
});
字段。
区域表中包含zone_id
字段。
每个用户都可以在一个区域中,例如 zone_id = 1
每个区域属于一个世界,例如 - world_id = 5
我想要的输出是返回用户区和世界信息。
这就是我没有任何关系设置的原因:
world_id
我的问题是..我确信关系可以用于更清晰的代码,但我不确定如何设置它。
解决方案1:
$zone = Zone::find($user->zone_Id);
$world = World::find($zone->world_id);
$data = $user;
$data['zone'] = $zone;
$data['zone']['world'] = $world;
错误:`public function getZone(Request $request)
{
$token = $request->input('token');
$user = JWTAuth::toUser($token);
// Simplest example using relationships
$userWithZone = User::with('zone.world')->find($user->id); // You'll get the `zone` relationship info here, too
return $userWithZone;
}`
答案 0 :(得分:1)
以下是一个如何通过Eloquent Relationships实现这一目标的例子。
// User.php
class User
{
public function zone()
{
return $this->belongsTo(Zone::class);
}
}
// Zone.php
class Zone
{
public function world()
{
return $this->belongsTo(World::class);
}
}
使用关系的最简单示例
$user = User::with('zone.world')->find($id); // You'll get the `zone` relationship info here, too
如果你想要
,你的关系会更复杂$user = User::with(['zone' => function($query) {
$query->with('world')
->select('id', 'zone_name', 'world_id');
})->select('username', 'zone_id')->find($id);
甚至......
$user = User::with(['zone' => function($query) {
$query->with(['world' => function($query2) {
$query2->select('id', 'world_name');
}])->select('id', 'zone_name', 'world_id');
})->select('username', 'zone_id')->find($id);
您生成的$user
将如下所示:
'user' => [ // This is a Collection
'username',
'email',
'zone_id',
'zone' => [ // This is a Collection
'id',
'zone_name',
'world_id',
'world' => [ // This is a Collection
'id',
'world_name'
]
]
];