首页 > 其他分享 >Laravel多个模型关联使用的情况

Laravel多个模型关联使用的情况

时间:2023-06-07 16:13:42浏览次数:26  
标签:Laravel platform 模型 id platforms products 关联 where company

比如说有三个模型,我想实现这样的效果:

SELECT DISTINCT `platforms`.* 
FROM `company_products` 
INNER JOIN `platforms` 
    ON `company_products`.`platform_id` = `platforms`.`id` 
WHERE `company_products`.`onboard_company_id` = 27 
    AND `company_products`.`product_type` LIKE 'TABF-Import%' 

  在下面可以这样实现:platformsImport

OnboardCompany
<?php
namespace App\Models;
use App\Models\Enums\StatusEnum;

class OnboardCompany extends Model
{

    public function product()
    {
        return $this->hasMany(CompanyProduct::class, "onboard_company_id", "id")->where('status', StatusEnum::Valid);
    }

    public function platformsImport()
    {
        $platforms = $this->product()
            ->where('product_type', 'like', 'TABF-Import%')
            ->whereHas('platform', function ($query) {
                $query->where('status', 1);
            })
            ->get()
            ->map(function ($item) {
                return $item->platform;
            });

        return $platforms;
        // $query = $this->getConnection()->table('company_products')
        //     ->join('platforms', 'company_products.platform_id', '=', 'platforms.id')
        //     ->where('company_products.onboard_company_id', '=', $this->id)
        //     ->where('company_products.product_type', 'like', 'TABF-Import%')
        //     ->where('platforms.status', '=', 1)
        //     ->select('platforms.*')
        //     ->distinct();
            
        // return $query->get();
    }
}

  

CompanyProduct:
<?php

namespace App\Models;

use App\Models\Enums\StatusEnum;

class CompanyProduct extends Model
{
    public function platform()
    {
        return $this->hasOne(Platform::class, 'id', 'platform_id');//->where('status', StatusEnum::Valid);
    }
}

  

Platform:
<?php

namespace App\Models;

use App\Traits\AuditTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Platform extends Model
{
    use HasFactory;
    use \App\Traits\AuditTrait;
    
    protected $guarded = [];

    const TYPE = [
        1 => 'Platform',
        2 => 'Partner',
    ];



}

  


标签:Laravel,platform,模型,id,platforms,products,关联,where,company
From: https://www.cnblogs.com/kaka0318/p/17463573.html

相关文章

  • laravel clickhouse join
    (79条消息)列式存储数据库ClickHouse的安装及使用Laravel连接使用_larvalclickhouse_风中一匹狼2333的博客-CSDN博客https://blog.csdn.net/qq_32404231/article/details/118930322$bd=DB::connection("clickhouse")->table('teacher')->as("a")-&......
  • 飞步fireboom 不同库关联查询
    fireboom关联查询demo列表queryMyQuery($skip:Int=10,$take:Int=10,$tid:Int){list:iot_device_bill_findManydevice_information(skip:$skip,take:$take){tenant_id@export(as:"tid")tenant_info:_join{data:iot_core_findFirstsys_......
  • 人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化
    人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测1.赛题简介项目链接以及码源见文末2021“AIEarth”人工智能创新挑战赛,以“AI助力精准气象和海洋预测”为主题,旨在探索人工智能技术在气......
  • 人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、
    人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测1.赛题简介项目链接以及码源见文末2021“AIEarth”人工智能创新挑战赛,以“AI助力精准气象和海洋预测”为主题,旨在探索人工智能技术在气......
  • 深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型
    深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍1.LeNet(1998)LeNet是最早的卷积神经网络之一<sup>[1]</sup>,其被提出用于识别手写数字和机器印刷字符。1998年,YannLeCun第一次将LeNet卷积神经网络应用到图像分类......
  • 深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型
    深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍1.LeNet(1998)LeNet是最早的卷积神经网络之一[1],其被提出用于识别手写数字和机器印刷字符。1998年,YannLeCun第一次将LeNet卷积神经网络应用到图像分类上,在手写数......
  • Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|附代码
    图形和统计输出。在此数据集中,我们必须预测信贷的违约支付,并找出哪些变量是违约支付的最强预测因子?以及不同人口统计学变量的类别,拖欠还款的概率如何变化有25个变量:ID: 每个客户的IDLIMIT_BAL: 金额SEX: 性别(1=男,2=女)4.教育程度:(1=研究生,2=本科,3=高中,4=其他,5=未知)5.婚......
  • C++容器4 关联容器
    关联容器的类型定义关联容器pair关联容器的类型别名 set的解引用是常量,添加元素 map和set适合关键字不存在才插入,不会更改关键字的值。你可以随便取出一个元素的值,也可以随便删除,但不能随便修改,因为红黑树也就平衡树的特性决定了修改特别麻烦,改变了值,他们关联的......
  • JMM(java内存模型)
    一、概念JMM与java并发编程相关:1、抽象了线程与主内存的关系,例如线程的共享变量需要放到内存中进行读取2、规定了java源代码到CPU可执行指令这个转换过程中需要遵守的规范,例如防止指令重排序造成的并发问题 二、并发编程的三个特性1、原子性一次操作或者多次操作,要么所有......
  • Laravel Api接口数据进行加解密
    Laravel利用中间件处理API接口数据加解密;在某些时候,为了接口数据的安全和保密性,需要对来回的数据进行加密处理。如果是Laravel框架,中间件绝对是个好东西。Laravel中间件包含一个完整的工作流,即请求前中间件(request)和请求后中间件(response)。在我们这次的场景中,刚好很好的用到了......