需要与多对多的关系进行热切的加载

时间:2018-01-14 17:02:09

标签: php laravel web-services relationship

从这个图像关系中,很多用户都会浏览服务,如果有人会打开看到所有商店订阅这个服务..商店怎么订阅这个?商店将添加与主要服务相关的子服务..子服务[service_id,' slone_id']

点击此处查看db screenshot:click here!

如何获得此商店?

- 在控制器中

$salons = SubService::with('salons')->where('service_id',$service_id)->get();

**模型SubService **

public function salons()
{
    return $this->hasMany('App\User','id','salone_id');
}

这里将返回真实的结果,但不是我喜欢它,因为有两个原因

1.如果使用在主服务上添加许多子服务将重复存储,因为我从子服务获取数据以获得所有者此服务。

2.此移动服务不需要服务信息我只需要来自表用户的所有者信息。

  

我的结果将返回数组中的第一个服务信息,然后获取另一个服务将返回数组商店信息我不喜欢这个。

如果你想看到回复

[
    {
        "id": 4,
        "name": "service 1",
        "time": "5 min",
        "price": "500",
        "service_id": 1,
        "salone_id": 3
        "salons": {
            "id": 3,
            "name": "salon",
            "email": "salon@salon.com",
            "type_user": "salon",
            "image": "img/avatar.png"
        }
    },
    {
        "id": 5,
        "name": "service  2",
        "time": "15 min",
        "price": "2111",
        "service_id": 1,
        "salone_id": 1
        "salons": {
            "id": 1,
            "name": "developer",
            "email": "salon@ss.com",
            "image": "img/avatar.png"
        }
    },
    {
        "id": 6,
        "name": "service  3",
        "time": "20 min",
        "price": "2111",
        "service_id": 1,
        "salone_id": 3
        "salons": {
            "id": 3,
            "name": "salon",
            "email": "salon@salon.com",
            "image": "img/avatar.png"
        }
    }
]
谁有人看到这个问题的其他解决方案?

1 个答案:

答案 0 :(得分:0)

我修复第一个问题(1.如果在主服务上添加许多子服务将重复存储,因为我从子服务获取数据以获得所有者此服务)

//query will back result
    $salons = SubService::where('service_id',$service_id)->groupBy('salone_id')->with('salons')->get();

并制作配置数据库管理器

  'strict' => false, //default true