【问题标题】:SQL join codeigniter 4SQL加入codeigniter 4
【发布时间】:2020-12-23 02:17:43
【问题描述】:

Codeigniter 4 抛出以下错误:

传递给 view() 的参数 2 必须是数组类型,给定 null 在第 35 行的 D:\xampp\htdocs\lordeCI\app\Controllers\Blog.php 中调用

关于下面的代码块:

public function post($post_id)
    {
        $model = new BlogModel();
        $posts = $model->select('*')->select('c1.nome as categoria, c2.nome as categoria_2')
            ->join('categorias c1', 'c1.categoria_id = posts.categoria', 'inner')
            ->join('categorias c2', 'c2.categoria_id = posts.categoria_2', 'inner')
            ->find($post_id);

        return view('posts/single_post',$posts);
    }

我非常感谢帮助我的人。

【问题讨论】:

  • 您必须通过array 而不是variable。请将$posts 替换为$data['posts'] 并在视图中传递$data 并在视图中打印$posts

标签: php codeigniter codeigniter-4


【解决方案1】:

首先您可以删除第一个选择 *,您可以选择 * 或定义您想要的字段。

只有当您需要表 1 中的所有列以及表 2 中的一些列时,您才应该这样做。

像这样:

$model->select('*, c1.nome as categoria, c2.nome as categoria_2');

其次,您需要发送一个数组,以便将这些键转换为变量。在这种情况下,如果你想在视图中添加一个名为 posts 的变量,你应该给它发送一个数组中的索引。

    public function post($post_id)
    {
        $model = new BlogModel();
        $data['posts'] = $model->select('c1.nome as categoria, c2.nome as categoria_2')
             ->join('categorias c1', 'c1.categoria_id = posts.categoria', 'inner')
             ->join('categorias c2', 'c2.categoria_id = posts.categoria_2', 'inner')
             ->find($post_id);

        return view('posts/single_post',$data);
    }

【讨论】:

  • select('*, c1.nome as categoria, c2.nome as categoria_2')以防您也需要访问其他列
  • 随意将我的评论编辑到您的答案中,cmets 可能会过时
猜你喜欢
  • 2015-03-06
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多