Laravel eloquent 问题,请大家看看下面的两端代码,为什么结果不同!感谢!

第一段代码

$all_lines = $company->company_status()->where('quarter', $decision_quarter - 1)->first()->com_sta_line_det;
    foreach ($all_lines as $line) {
        $decision->com_dec_line()->create([
            'company_line_id' => $line->company_line_id,
            'company_line_sale' => 0,
        ]);
    }

第二段代码

$all_lines = $company->company_status->where('quarter', $decision_quarter - 1)->first()->com_sta_line_det;
    foreach ($all_lines as $line) {
        $decision->com_dec_line()->create([
            'company_line_id' => $line->company_line_id,
            'company_line_sale' => 0,
        ]);
    }

原问题是:第一段代码有括号 “->company_status ()->” 可以运行,第二段代码没有括号的无法运行(系统跳过了 foreche 并且没有报错),两段代码为什么结果不同呢?

在大家的指点下证明了,第二段代码 $all_lines 查询到的是一个空集合,已经解决了该问题,感谢大家!

但是,另外一个地方与第二段代码相同的写法,为什么可以取到数据呢?????代码如下:

public function technology(Company $company, $status)
{
    $technology =  $company->company_status->where('quarter', $status)->first()->com_sta_technology;
    return $technology;
}
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

$company->company_status()->where(XXX) ,这里是在 Builder 实例上调用 where 方法,也就是 sql 中的 where
$company->company_status->where(XXX) ,这里是在 Collection 实例上调用 where

4年前 评论
No_Panic 4年前
HEPING (楼主) 4年前
ㅤㅤ (作者) 4年前
ㅤㅤ (作者) 4年前
HEPING (楼主) 4年前
HEPING (楼主) 4年前
ㅤㅤ (作者) 4年前
HEPING (楼主) 4年前
讨论数量: 4

你的 $company->company_status属性 还是 方法 ?属性不用 (),方法需要 ()

可以使用 where 查询,猜测应该是关联模型,所以应该加 ()

4年前 评论
HEPING (楼主) 4年前
laravel_denghy (作者) 4年前
HEPING (楼主) 4年前

另外不应该把 create 语句 写在 foreach 循环 中,应该使用批量插入方法。

你的模型关联关系 我看不太懂, 建议是不是可以使用 关联模型更新方式 更新数据。

4年前 评论
HEPING (楼主) 4年前
No_Panic

为什么第二段没法运行?报错内容是什么?

4年前 评论
HEPING (楼主) 4年前
No_Panic (作者) 4年前
No_Panic (作者) 4年前
HEPING (楼主) 4年前

$company->company_status()->where(XXX) ,这里是在 Builder 实例上调用 where 方法,也就是 sql 中的 where
$company->company_status->where(XXX) ,这里是在 Collection 实例上调用 where

4年前 评论
No_Panic 4年前
HEPING (楼主) 4年前
ㅤㅤ (作者) 4年前
ㅤㅤ (作者) 4年前
HEPING (楼主) 4年前
HEPING (楼主) 4年前
ㅤㅤ (作者) 4年前
HEPING (楼主) 4年前

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