Laravel как сделать видимым скрытый атрибут отношений - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть 4 таблицы: 1- предложения (принадлежит проектам) 2- проекты (имеет много предложений и принадлежит бизнесу) 3- бизнес (имеет много проектов, принадлежит пользователю) 4- пользователи (имеет один бизнес )

У пользователей, которые я установил email как скрытое поле, я хочу, чтобы подсчитывать сегодняшние предложения для каждого проекта и группировать их по бизнесу, тогда я должен посылать подсчет предложений для каждого проекты бизнеса. Предположим, что предприятие А опубликовало два проекта и получило 5 предложений для обоих проектов (3 для одного и 2 для другого). Мой текущий запрос не группирует данные, основанные на бизнесе, он только группирует данные, основанные на проекте. Мой вопрос: 1- Как я могу добиться этого, чтобы получить количество данных на основе business, and project 2- Как я могу сделать видимым email поле users модели.

 $data = Proposal::toDay()
    ->selectRaw('count(*) AS cnt, project_id')  
    ->with([
        'project:id,title,business_id',
        'project.business' => function($query) {
            return $query->select(['id', 'name', 'owner_id']);
        },
        'project.business.owner' => function($query) {
            return $query->select(['id','first_name','last_name','email']);
        }
    ])
    ->groupBy('project_id')
    ->get();

Токовый выход как это:

array:3 [
0 => array:4 [
"cnt" => 1
"project_id" => 1
"submission_date" => ""
"project" => array:5 [
  "id" => 1
  "title" => "HRMIS System"
  "business_id" => 2
  "liked" => false
  "business" => array:4 [
    "id" => 2
    "name" => "Company A"
    "owner_id" => 5
    "owner" => array:3 [
      "id" => 5
      "first_name" => "Mobasher"
      "last_name" => "Fasihi"
    ]
  ]
]
]
1 => array:4 [
"cnt" => 1
"project_id" => 2
"submission_date" => ""
"project" => array:5 [
  "id" => 2
  "title" => "Senior Software Developer"
  "business_id" => 1
  "liked" => false
  "business" => array:4 [
    "id" => 1
    "name" => "Company B"
    "owner_id" => 2
    "owner" => array:3 [
      "id" => 2
      "first_name" => "John"
      "last_name" => "Richard"
    ]
  ]
]
]
2 => array:4 [
"cnt" => 1
"project_id" => 4
"submission_date" => ""
"project" => array:5 [
  "id" => 4
  "title" => "100 Mac-Book Pro"
  "business_id" => 1
  "liked" => false
  "business" => array:4 [
    "id" => 1
    "name" => "Company B"
    "owner_id" => 2
    "owner" => array:3 [
      "id" => 2
      "first_name" => "John"
      "last_name" => "Richard"
    ]
  ]
]
]
]

То, что я ожидаю, это:

[
  0 => [
    "cnt" => 1
    "submission_date" => "",
    "project" => [
      "id" => 1,
      "title" => "HRMIS System",
      "business_id" => 2,
      "liked" => false,
      "business" => [
        "id" => 2
        "name" => "Company A"
        "owner_id" => 5,
        "owner" => [
          "id" => 5
          "first_name" => "Mobasher",
          "last_name" => "Fasihi",
          "email" => "mobasher@test.com"
        ]
      ]
    ]
  ],
  1 => [
    "cnt" => 2
    "submission_date" => "",
    "project" => [
      "id" => 2
      "title" => "Senior Software Developer"
      "business_id" => 1,
      "liked" => false,
      "business" => [
        "id" => 1,
        "name" => "Company B",
        "owner_id" => 2,
        "owner" => [
          "id" => 2,
          "first_name" => "John",
          "last_name" => "Richard",
          "email" => "john@test.com"
        ]
      ]
    ],
    "project" => [
      "id" => 4
      "title" => "100 Mac-Book Pro"
      "business_id" => 1
      "liked" => false
      "business" => [
        "id" => 1,
        "name" => "Company B",
        "owner_id" => 2,
        "owner" => [
          "id" => 2
          "first_name" => "John"
          "last_name" => "Richard",
          "email" => "john@test.com"
        ]
      ]
    ]
  ]
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...