【问题标题】:Laravel – Get relationship countLaravel - 获取关系计数
【发布时间】:2020-06-22 03:14:45
【问题描述】:

我是 laravel 的新手。我用的是 laravel 5.4

我有这个问题,我不知道从哪里开始。

我想计算存储中所有类别均为电子的资产。

这是我的桌子:

资产

 -- 
 id
 asset_name
 asset_type_id (fk)

资产类型

 --
 id
 asset_type
 category_id (fk)

类别

 --
 id
 category

这是我定义的模型:

资产模型

public function assetType(){
     return $this->belongsTo(AssetType::class);
}
public function category(){
     return $this->belongsTo(Category::class);
}

资产类型模型

public function category(){
     return $this->belongsTo(Category::class);
 }

public function assets(){
     return $this->hasMany(Asset::class);
}

类别模型

public function types(){
     return $this->hasMany(AssetType::class);
}

控制器:

资产控制器

public function index()
    {
        $result = Asset::all();

        return view('asset.index', compact('result'));
    }

查看:

index.blade

@foreach($result as $asset)
<tr>

    <td>{{ $asset->asset_name }}</td>
    <td>{{ $asset->assetType->asset_type}}</td>
    <td>{{ $asset->assetType->category->category}}</td>


</tr>
@endforeach

样本结果:

Asset: DELL
Asset Type: Laptop
Category: Electronic

有了它,我可以查看所有资产。

我正在尝试获取控制器中类别为“电子”的所有资产的计数并将其传递给查看。请赐教我迷路了。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以像这样在您的Category 上使用Has Many Through 关系。

    类别模型

    public function assets()
    {
        return $this->hasManyThrough(Asset::class, AssetType::class);
    }
    

    有了这个,您可以轻松地从Category 联系到Asset。现在在你的控制器中计算你的assets

    Category::where('category', 'Electronic')->withCount('assets')->get();
    

    【讨论】:

    • 感谢您的回复先生,我应用了您所说的,但我似乎找不到计数,当我 dd 时它给了我一个完整的构建查询。 $assets=Category::where('category', 'Electronic')->withCount('assets'); dd($assets);
    • 抱歉,您是否附加了get() 方法?我编辑了答案。
    • 是的,它的工作原理非常感谢@Marijan 先生,你拯救了我的一天 :)。你的快速反应真的帮助了我grasyas。
    猜你喜欢
    • 2016-03-09
    • 2017-05-01
    • 2018-03-19
    • 1970-01-01
    • 2018-12-13
    • 2016-04-07
    • 2021-05-06
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多