Конвертировать MYSQL-запрос в Eloquent Laravel - PullRequest
0 голосов
/ 29 ноября 2018

это мой запрос MYSQL:

SELECT product_tasks.id AS product_task_id,
       tasks.id AS tasks_id,
       tasks.task_name AS label,
       tasks.serial_id AS serial_id,

  (SELECT serials.starting_series
   FROM serials
   WHERE serials.id = serial_id) AS starting_series
FROM product_tasks
JOIN tasks ON tasks.id = product_tasks.task_id
WHERE product_tasks.product_id = 1;

И это мой красноречивый запрос, но я еще не закончил:

ProductTask::select('product_tasks.id as product_task_id', 
                    'tasks.id as tasks_id', 'tasks.task_name as label', 
                    'tasks.serial_id as serial_id', * INSERT missing query here *)
            ->JOIN('tasks', 'tasks.id', 'product_tasks.task_id') 
            ->WHERE('product_tasks.product_id', 1) 
            ->get();

какая часть отсутствует в моем красноречивомзапрос

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Использование DB:raw()

ProductTask::select(
 'product_tasks.id as product_task_id',
 'tasks.id as tasks_id',
 'tasks.task_name as label',
 'tasks.serial_id as serial_id',
 DB::raw("SELECT serials.starting_series as starting_series FROM serials WHERE serials.id = serial_id")) 
 ->join('tasks', 'tasks.id', 'product_tasks.task_id')
 ->where('product_tasks.product_id', 1)
 ->get();
0 голосов
/ 29 ноября 2018

Можете ли вы использовать приведенный ниже формат для создания подзапроса

$pickup = orders::select(DB::raw('*,COUNT(skey) as sk'))
        ->from(DB::raw('(SELECT a.*
                         ,IF(surrogate_key="",order_no,surrogate_key) as skey
                         ,b.client_name
                         FROM tb_orders a
                         LEFT JOIN tb_clients b ON a.client_id=b.client_name
                         WHERE order_status IN (1,2,3)
                         AND agent_id=' . $agent->agent_id . ') as tab1'))
        ->groupBy('skey')
        ->orderBy('order_id', 'desc')
        ->paginate($limit);

    $data = $pickup->toArray();
0 голосов
/ 29 ноября 2018

Попробуйте этот красноречивый запрос:

ProductTask::select(
         'product_tasks.id as product_task_id',
         'tasks.id as tasks_id',
         'tasks.task_name as label',
         'tasks.serial_id as serial_id',
         'serials.starting_series as starting_series')
         ->join('tasks', 'tasks.id', '=','product_tasks.task_id')
         ->join('serials','serials.id','=','tasks.serial_id')
         ->where('product_tasks.product_id', 1)
         ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...