Php Laravel有很多关系返回大量数据,但这些数据不是一个集合?
我正在使用laravel开发一个非常简单的API。用户有许多任务,一个任务属于一个用户。我的路由文件如下:Php Laravel有很多关系返回大量数据,但这些数据不是一个集合?,php,laravel,laravel-4,eloquent,foreign-key-relationship,Php,Laravel,Laravel 4,Eloquent,Foreign Key Relationship,我正在使用laravel开发一个非常简单的API。用户有许多任务,一个任务属于一个用户。我的路由文件如下: <?php Route::resource('users', 'UsersController'); Route::get('users/{user_id}/tasks', 'UsersController@show_tasks'); Route::resource('tasks', 'TasksController'); myUsersController中的show\u ta
<?php
Route::resource('users', 'UsersController');
Route::get('users/{user_id}/tasks', 'UsersController@show_tasks');
Route::resource('tasks', 'TasksController');
myUsersController
中的show\u tasks
方法如下所示:
public function tasks(){
return $this->hasMany('Task');
}
public function show_tasks($id){
if(!$user = $this->user->find($id)){
return Acme::response('error', 'Resource not found.', [], 404);
}
$tasks = $user->tasks();
dd($tasks);
return Acme::response('success', [], $tasks, 200);
}
我之所以放置dd方法,是因为响应返回一个空数组,我想直接查看$tasks
变量中的内容。我以为它一定是一个收集对象,但当我在我的Postman REST客户端中运行时,由于我假设的大数据溢出,它被挂起,屏幕截图如下:
如果有人对Acme::response
方法感兴趣,我也会包括该代码:
public static function response($status = [], $messages = [], $data = [], $httpStatusCode){
return Response::json([
'status' => $status,
'messages' => $messages,
'data' => $data,
], $httpStatusCode);
}
为什么这种关系不起作用?我已经这样做了好几个小时了,仍然不明白为什么!我猜我可能在某个地方犯了一个非常愚蠢的错误,但无论如何我都做不到 你不应该在这里使用()
。而不是:
$tasks = $user->tasks();
您将通过以下方式获得任务:
$tasks = $user->tasks;
编辑
当您有关系并使用$user->tasks
时,它的工作原理与使用$user->tasks()->get()
时一样,因此我们可以说它是一种快捷方式
你可以使用Paranthes你得到的关系你可以添加更多的条件,例如你可以这样做:
$tasks = $user->tasks()->active()->get();
并在任务
模型中定义范围:
function activeScope($q) {
return $q->where('status',1);
}
现在您只能为用户获取活动任务。哈哈,我知道我在做一些愚蠢的事情!非常感谢。我会尽快接受你的回答。不管怎样,你能解释一下我用tasks()代替task时看到的无限数据流吗?@Rohan我添加了更多细节