Laravel 如何实现 yii2 的这种写法??

yii2有这种写法:

$articleList = Article::find()->joinWith("article_class as class")->where([])->all();
foreach ($articleList as $article) {
        $class = $article['article_class'];
        if($article['is_del']==1){//文章刪除\
              $class->is_del = 1;//刪除分類\  
              $class->save();\
        }
}

请问下,用laravel框架,这种写法如何实现啊?需要在循环中,使用对象操作数据
备注说明:
1.文章对应的分类是一对一的关系,每一篇文章都可以找到对应的文章分类
2.上面的例子是将所有的文章列表,和文章对应的一对一文章分类信息都给查询出来了,并且是对象的形式

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7
//可以获取所有的文章与及预加载每篇文章对应的分类,class为文章与分类的关联关系
$articleList = Article::with('class')->get();
...

建议你去看下模型关联

5年前 评论

谢谢,关联的问题我已经解决了,但是现在又延伸出来一个问题
我写的示例是这样的

           $where = [];
            $where['id'] = 44;
            $article = Articles::with("articles_class")->where($where)->get();
            foreach ($article as $k => $v) {
                $v->article_desc = 3456;
                $v->save();
                if ($v['id'] == 44) {
                    $classA = $v['articles_class'];
                    $classA->class_name = 333;
                    $classA->save();
                }
            }

程序可以正常执行,只是我用的phpstorm会在{$classA->save();}这里报错,报Method 'save' not found 的错误,请问下,你有什么好的办法解决吗?

5年前 评论

@zhangzeyun 并不能这样写,你需要在模型里面定义关联然后调用相应的关联模型进行保存,具体写法应该是

$v->articles_class->class_name = 3 ;
$v->articles_class->save();
5年前 评论

@linxb 我已经在模型中定义过关联模型了,上面的程序可以正常运行,写成你这种,也能正常运行,只是在调用save中时,ide会提示该方法不存在(程序是可以正常运行的)

5年前 评论

@zhangzeyun 你需要引入laravel的ide-helper,可以按这篇文章进行配置 博客:Laravel 超好用代码提示工具 Laravel IDE Helper

5年前 评论

@linxb 已经配置过了。。。。入口文件和路由文件里面的方法都能找到,还是不行。。

5年前 评论

@zhangzeyun 执行 php artisan ide-helper:models , 如果这个在不行的话那我也不知道什么原因了

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!