Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel有很多关系返回大量数据,但这些数据不是一个集合?_Php_Laravel_Laravel 4_Eloquent_Foreign Key Relationship - Fatal编程技术网

Php Laravel有很多关系返回大量数据,但这些数据不是一个集合?

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

我正在使用laravel开发一个非常简单的API。用户有许多任务,一个任务属于一个用户。我的路由文件如下:

<?php

Route::resource('users', 'UsersController');
Route::get('users/{user_id}/tasks', 'UsersController@show_tasks');
Route::resource('tasks', 'TasksController');
my
UsersController
中的
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我添加了更多细节