Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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不会返回多个返回_Php_Laravel - Fatal编程技术网

PHP不会返回多个返回

PHP不会返回多个返回,php,laravel,Php,Laravel,我正在尝试呈现多个返回,呈现两个返回的最佳方式是什么 其中一个返回可删除的集合,而可更新的集合不返回 public function getPosts() { $posts = Post::with('user')->get(); $response = new Response(json_encode($posts)); $response->headers->set('Content-Type', 'application/json');

我正在尝试呈现多个返回,呈现两个返回的最佳方式是什么

其中一个返回可删除的集合,而可更新的集合不返回

public function getPosts()
{

    $posts = Post::with('user')->get();
    $response = new Response(json_encode($posts));
    $response->headers->set('Content-Type', 'application/json'); 
    return response()->json(Post::with('user')->get()->map(function(Post $post){ 
        return collect($post->toArray())->put('deletable', auth()->user()->can('delete', $post)); 
        return collect($post->toArray())->put('update', auth()->user()->can('update', $post));
    })); 
}
更新后,帖子不会出现以下情况:

public function getPosts()
{
    $posts = collect(Post::with('user')->get());
    $response = new Response(json_encode($posts));
    $response->headers->set('Content-Type', 'application/json'); 

    $data = $posts->map(function(Post $post)
    { 
        $post->toArray()->put('deletable', auth()->user()->can('delete', $post)); 
        $post->toArray()->put('update', auth()->user()->can('update', $post));

        return $post;
    });

    return response()->json($data); 
}

尝试以下几点:

public function getPosts()
{
    $posts = Post::with('user')->get();
    $response = new Response(json_encode($posts));
    $response->headers->set('Content-Type', 'application/json'); 

    $data = $posts->map(function(Post $post)
    { 
        $post->toArray())->put('deletable', auth()->user()->can('delete', $post); 
        $post->toArray())->put('update', auth()->user()->can('update', $post);

        return $post;
    });

    return response()->json($data); 
}
这是怎么回事

  • 在数组映射中使用$posts变量,而不是再次调用
  • 对数组映射中的每个$post执行操作
  • 将$post返回到$data数组
  • 返回$data
  • 这是数组映射和返回上的文档

    您不能多次返回

    请阅读以下内容:

    更新:

    试试这个:

    public function getPosts()
    {
        $posts = Post::with('user')->get();
        $response = new Response(json_encode($posts));
        $response->headers->set('Content-Type', 'application/json'); 
    
    
        $data = $posts->map(function(Post $post)
        { 
            $user = auth()->user();
    
            if($user->can('delete', $post)) {
                $post['deletable'] = true;
            }
    
            if($user->can('update', $post)) {
                $post['update'] = true;
            }
            return $post;
        })
    
        return response()->json($data); 
    }
    

    每次函数调用不能返回一次以上。返回后,函数将立即退出。第一个返回将运行,函数将退出,第二个将永远不会被看到。一个好的IDE会告诉你第二次返回的是死代码。我使用升华文本,解决这个问题的最佳方法是什么?因此,如果找到了像
    这样的条件控制结构。返回一个对象数组。然后按照调用代码中的要求解构它。@BARNOWL如果需要返回多个值,则需要将所有内容像数组一样固定在一个结构中,然后返回该结构。数组将起作用。如果你不能让它工作,你需要提供具体的信息,这样我们有希望帮助你。这看起来有点“黑客”,有没有一种方法我可以把两个收集返回传递到一个数组中,使它看起来更适合php 7。我知道是怎么回事,你解释了,但格式很“黑客”你是个救命恩人,一直在寻找偷偷摸摸的收藏文档感谢你的代码解决了语法错误现在我的帖子没有出现。是的,帖子没有出现我会编辑帖子来告诉你我得到了什么。你让我成为一个快乐的猫头鹰,谢谢:)呜呜呜呜呜呜