首页 > 解决方案 > Laravel,努力使用查询生成器重现查询

问题描述

我有以下查询,它返回 44 行:

SELECT id, IF(r.make, CONCAT(makes.description, ': ', r.make), 0) AS make, IF(r.model, models.description, 0) AS model, r.text, r.h1_tag, r.title, r.keywords, r.description, r.website_search_path_id, r.website_vehicle_type_id 
FROM website_results_text r 
LEFT JOIN vehicle_makes makes ON makes.code = r.make
LEFT JOIN vehicle_models models ON models.code = r.model AND models.make = r.make
WHERE r.website_id = 1966

结果类似于以下,不包括所有行和排除的不重要的列。

---------------------------------------------------------------------
| id | make       | model        | text     | h1_tag     | title    |
_____________________________________________________________________
| 192| 0          | 0            | test     | test       | test     |
| 193| Fiat:24    | 0            | test     | test       | test     |
---------------------------------------------------------------------

下面是我到目前为止得到的查询,如您所见,如果vehicle_makes表中没有返回 make,我缺少 IF 语句。

$resultsText = ResultsText::where([ 'website_id' => $website->id ])
    ->join('vehicle_makes', 'website_results_text.make', '=', 'vehicle_makes.code')
    ->join('vehicle_models', 'website_results_text.model', '=', 'vehicle_models.code')
    ->select(
        'vehicle_makes.description AS make',
        'vehicle_models.description AS model',
        'website_results_text.text',
        'website_results_text.h1_tag',
        'website_results_text.title',
        'website_results_text.keywords',
        'website_results_text.website_search_path_id',
        'website_results_text.website_vehicle_type_id'
    )->get();

标签: phplaravel

解决方案


推荐阅读