You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel7中对config返回数组调用find()报错如何修复

报错原因

config('posts') 读取配置文件得到的是原生PHP数组,并非Eloquent查询返回的模型集合对象,数组不存在find()成员方法,直接调用就会触发该错误。

修复代码

修改PostController@show方法逻辑,将配置数组转为Laravel集合后,用集合提供的匹配方法查找对应id的条目即可,完整代码如下:

public function show($id)
{
    $posts = config('posts');
    // 转集合后按id匹配第一条数据
    $post = collect($posts)->firstWhere('id', $id);

    // 匹配不到数据时返回404
    if (is_null($post)) {
        return response()->json(['message' => '资源不存在'], 404);
    }

    return response()->json(compact('post'));
}
额外说明
  • 如果你不想用集合方法,也可以通过原生数组遍历实现匹配:
$post = null;
foreach ($posts as $item) {
    if ($item['id'] == $id) {
        $post = $item;
        break;
    }
}
  • 请确认config/posts.php文件结构正确,文件末尾必须return整个文章数组,否则config('posts')会读取到null值:
// config/posts.php 正确结构示例
return [
    [
        "id" => 1,
        "name" => "...",
        "description" => "...",
        "github_url" => "...",
        "site_url" => "...",
        "imgs" => [
            "img1" => "...",
            "img2" => "...",
            "img3" => "...",
        ],
    ],
    // 其余文章条目
];
  • 如果开启了配置缓存,修改配置后执行php artisan config:clear命令清除缓存即可生效。

内容的提问来源于stack exchange,提问作者Andrea Pontillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:01:18