属性[model_B]在Eloquent生成器示例上不存在,Laravel/Eloquent具有Many model where子句不起作用

ee7vknir  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(108)

这是我的模特

class ModelA extends Model
{
    use HasFactory;

    public function model_b()
    {
        return $this->hasMany(ModelB::class);
    }

}

此查询运行良好。

$lastWeek = ModelA::find(1)
                                    ->model_b->get();

使用where子句查询时

$lastWeek = ModelA::where('name','=',$name)
                                    ->model_b->get();

上面写着:
属性[model_b]在Eloquent生成器示例上不存在。

m528fe3b

m528fe3b1#

在第一个查询中,find()返回模型,因此您可以访问关系,我认为该示例中的->get()没有做任何事情。
在上一个查询中,where子句在您尝试访问其关系之前没有返回模型(它返回了雄辩的构建器)。

$lastWeek = ModelA::firstWhere('name', $name)
   ->model_b;
cngwdvgl

cngwdvgl2#

你可以这样做。

$lastWeek = ModelA::where('name','=',$name)
    ->with('model_b')
    ->get();
$lastWeek = $lastWeek->model_b;

相关问题