Как преобразовать sql-запрос в laravel ORM-запрос, ВСТАВИТЬ, ЕСЛИ НЕ СУЩЕСТВУЕТ - PullRequest
0 голосов
/ 28 июня 2019
    public function update_tb_tokenidparc($token, $id_vendedor_pr, $id_corretora_pr, $id_parceiro){" INSERT INTO tb_tokenidparc 
    (nu_cdVendedor4E_tk1,nu_cdCorretoraS4E_tk,nu_IdParceiro_tk,cd_Codtokenidparc,status_token)
    SELECT * FROM (SELECT $id_vendedor_pr,$id_corretora_pr,$id_parceiro,$token,'1') AS tmp
    WHERE NOT EXISTS (
        SELECT * FROM tb_tokenidparc WHERE nu_cdVendedor4E_tk = $id_vendedor_pr and nu_cdCorretoraS4E_tk = $id_corretora_pr
        and nu_IdParceiro_tk = $id_parceiro and cd_Codtokenidparc = '.$token.') LIMIT 1)";

У меня есть эта модель, и мне нужно преобразовать ее в laravel orm

Самая большая проблема - если не существует пункт, который я не нашел в документах Laravel

Если есть что-то вроде, я ценю

Я не ищу вставку или создание, потому что это не решает мои проблемы

Edit¹: причина для конвертации в том, что у меня есть массив для передачи.

Edit²: что я уже пробовал

public function insert_tb_tokenidparc($token, $id_vendedor_pr, $id_corretora_pr, $id_parceiro){

        DB::table('tb_tokenidparc')->firstOrCreate([
            'nu_cdVendedor4E_tk' => $id_vendedor_pr,
            'nu_cdCorretoraS4E_tk' => $id_corretora_pr,
            'nu_IdParceiro_tk' => $id_parceiro,
            'cd_Codtokenidparc' => $token,
            'status_token' => '1',
        ]);

    }

1 Ответ

0 голосов
/ 01 июля 2019

Вы можете дать методу firstOrCreate два параметра: первый параметр должен содержать пары столбец / значение, которые вы хотите найти, а второй - любые другие пары столбец / значение, которые вы хотите вставить, когда первый столбец / значениепары не найдены в базе данных.

В вашем случае похоже, что вы хотите просмотреть все столбцы, кроме значения status_token, так что вы можете немного изменить использование метода firstOrCreateна:

 TbTokenidparc::firstOrCreate([
            'nu_cdVendedor4E_tk' => $id_vendedor_pr,
            'nu_cdCorretoraS4E_tk' => $id_corretora_pr,
            'nu_IdParceiro_tk' => $id_parceiro,
            'cd_Codtokenidparc' => $token,
        ], [
            'status_token' => '1',
        ]);

Предполагая TbTokenidparc модель Eloquent для вашей таблицы tb_tokenidparc.Если вы еще не определили модель, вы можете определить ее следующим образом:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class TbTokenidparc extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'tb_tokenidparc';

     /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['nu_cdVendedor4E_tk1', 'nu_cdCorretoraS4E_tk', 'nu_IdParceiro_tk', 'cd_Codtokenidparc', 'status_token'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...