Merhaba arkadaşlar,
DB sınıfı ile aşağıdaki gibi bir soru yapmam gerekiyor. Sorguda join içerisindeki where şartını kaldırdığımda sorgu çalışıyor. Bana where ile beraber gelen sonuç lazım.
$reports = DB::table($this->table_name)->select(
$this->table_name . '.guid',
$this->table_name . '.activity_area_guid',
$this->table_name . '.activity_area_version',
$activity_area . '.value as activity_area',
$this->table_name . '.activity_guid',
$this->table_name . '.activity_version',
$activity . '.value as activity',
$this->table_name . '.hazard',
........
)
->leftJoin($activity_area, function ($join) use ($activity_area){
$join->on($activity_area . '.guid', '=', $this->table_name . '.activity_area_guid');
//->where($activity_area . '.version', '=', $this->table_name . '.activity_area_version');
})
->leftJoin($activity, function ($join) use ($activity){
$join->on($activity . '.guid', '=', $this->table_name . '.activity_guid');
//->where($activity . '.version', '=', $this->table_name . '.activity_version');
})
->where([$this->table_name . '.is_deleted' => 0, $this->table_name . '.company_guid' => $company_guid, $this->table_name . '.period_guid' => $period_guid, $this->table_name . '.report_type' => $report_type])
->orderBy($this->table_name . '.order_no', 'ASC')
->get();
Where şartı ile çalışan DB sınıfının sql çıktısı;
SELECT
`risk___reports`.`guid`,
`risk___reports`.`activity_area_guid`,
`risk___reports`.`activity_area_version`,
`risk___activity_areas`.`value` AS `activity_area`,
`risk___reports`.`activity_guid`,
`risk___reports`.`activity_version`,
`risk___activities`.`value` AS `activity`,
`risk___reports`.`hazard`,
.......
FROM
`risk___reports`
LEFT JOIN `risk___activity_areas` ON `risk___activity_areas`.`guid` = `risk___reports`.`activity_area_guid` AND `risk___activity_areas`.`version` = risk___reports.activity_area_version
LEFT JOIN `risk___activities` ON `risk___activities`.`guid` = `risk___reports`.`activity_guid` AND `risk___activities`.`version` = risk___reports.activity_version
WHERE
(
`risk___reports`.`is_deleted` = 0
AND `risk___reports`.`company_guid` = '6AAAD9B9-9896-D4D9-34CF-BAF56A6DE79E'
AND `risk___reports`.`period_guid` = 'E159C269-C438-F562-C00E-32261B4336E9'
AND `risk___reports`.`report_type` = 'isg'
)
ORDER BY
`risk___reports`.`order_no` ASC
Where şartlarını aktif edip de sql çıktısını alıp test ettiğimde sorgu çalışıyor. Yaptığım testin sonucunda sql de bir sıkıntı yok ama DB sınıfı sql oluşturup çalıştırdığında sonuç alamadığını görüyorum. Where şartında karşılaşan versiyon sütunları tinyint(3) tipinde. Tip eşleşmesinde de hata olmadığına göre hata nerede olabilir ?