У меня есть 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"
]
]
]
]
]