如何使用newQuery()在Laravel中对表进行别名

时间:2018-01-26 12:00:26

标签: php mysql laravel eloquent laravel-eloquent

我有一个名为enum的表格,我想仅使用cotacaoitensfranqueado来调用它,我知道我可以这样做cif我在this question中看到了什么但是我想用我的模型做到这一点。

DB::table('cotacaoitensfranqueado as cif')

2 个答案:

答案 0 :(得分:1)

您不需要在Eloquent中使用newQuery()(int)

Cotacaoitensfranqueado::where('codigoconcentrador', auth()->user()->codigoconcentrador)->get();

但如果你真的想使用它,请改用query(),因为newQuery()已被弃用。

答案 1 :(得分:0)

我意识到如何解决问题,你可以在模型中做别名

<强> Cotacaoitensfranqueado.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cotacaoitensfranqueado extends Model
{
    protected $table = 'cotacaoitensfranqueado as cif';
    public $timestamps = false;
}

<强>控制器/ CotacaoController.php

...
use App\Cotacaoitensfranqueado;

class CotacaoController extends Controller
{
   ...

   public function canSendBuy($codigoempresa, $codigocotacao){
        $user = Auth::user();

        $model_cotacaoitensfranqueado = new Cotacaoitensfranqueado();

        $query = $model_cotacaoitensfranqueado->query();
        $query->select('cif.*', 'c.status');
        $query->join('cotacao as c', [
           ['c.codigoconcentrador', 'cif.codigoconcentrador'],
           ['c.codigoempresa', 'cif.codigoempresa'],
           ['c.codigocotacao', 'cif.codigocotacao'],
        ]);
        $query->where('cif.codigoconcentrador', (int)$user->codigoconcentrador)
            ->where('cif.codigoempresa', (int)$codigoempresa)
            ->where('cif.codigofilial', $user->codigofilial)
            ->where('cif.codigocotacao', (int)$codigocotacao)
            ->where('c.status', 'A');

        $cotacao = $query->get();

        dd($cotacao);
    }

    ...

}