如何使用 newQuery() 在 Laravel 中别名 table
How to alias table in Laravel using newQuery()
我有一个名为 cotacaoitensfranqueado
的 table,我只想使用 cif
来调用它,我知道我可以做到这一点 DB::table('cotacaoitensfranqueado as cif')
在 this question 中看到,但我想使用我的模型来做到这一点。
$user = Auth::user();
$model_cotacaoitensfranqueado = new Cotacaoitensfranqueado();
$query = $model_cotacaoitensfranqueado->newQuery();
$query->select('cotacaoitensfranqueado.*', 'c.status');
$query->join('cotacao as c', [
['c.codigoconcentrador', 'cotacaoitensfranqueado.codigoconcentrador'],
['c.codigoempresa', 'cotacaoitensfranqueado.codigoempresa'],
['c.codigocotacao', 'cotacaoitensfranqueado.codigocotacao'],
]);
$query->where('cotacaoitensfranqueado.codigoconcentrador', (int)$user->codigoconcentrador)
->where('cotacaoitensfranqueado.codigoempresa', (int)$codigoempresa)
->where('cotacaoitensfranqueado.codigofilial', $user->codigofilial)
->where('cotacaoitensfranqueado.codigocotacao', (int)$codigocotacao)
->where('c.status', 'A');
$cotacao = $query->get();
您不需要将 newQuery()
或 (int)
与 Eloquent 一起使用:
Cotacaoitensfranqueado::where('codigoconcentrador', auth()->user()->codigoconcentrador)->get();
但如果您真的想使用它,请改用 query()
,因为 newQuery()
已被弃用。
我知道怎么解决了,你可以在模型中做别名
Cotacaoitensfranqueado.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Cotacaoitensfranqueado extends Model
{
protected $table = 'cotacaoitensfranqueado as cif';
public $timestamps = false;
}
Controller/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);
}
...
}
我有一个名为 cotacaoitensfranqueado
的 table,我只想使用 cif
来调用它,我知道我可以做到这一点 DB::table('cotacaoitensfranqueado as cif')
在 this question 中看到,但我想使用我的模型来做到这一点。
$user = Auth::user();
$model_cotacaoitensfranqueado = new Cotacaoitensfranqueado();
$query = $model_cotacaoitensfranqueado->newQuery();
$query->select('cotacaoitensfranqueado.*', 'c.status');
$query->join('cotacao as c', [
['c.codigoconcentrador', 'cotacaoitensfranqueado.codigoconcentrador'],
['c.codigoempresa', 'cotacaoitensfranqueado.codigoempresa'],
['c.codigocotacao', 'cotacaoitensfranqueado.codigocotacao'],
]);
$query->where('cotacaoitensfranqueado.codigoconcentrador', (int)$user->codigoconcentrador)
->where('cotacaoitensfranqueado.codigoempresa', (int)$codigoempresa)
->where('cotacaoitensfranqueado.codigofilial', $user->codigofilial)
->where('cotacaoitensfranqueado.codigocotacao', (int)$codigocotacao)
->where('c.status', 'A');
$cotacao = $query->get();
您不需要将 newQuery()
或 (int)
与 Eloquent 一起使用:
Cotacaoitensfranqueado::where('codigoconcentrador', auth()->user()->codigoconcentrador)->get();
但如果您真的想使用它,请改用 query()
,因为 newQuery()
已被弃用。
我知道怎么解决了,你可以在模型中做别名
Cotacaoitensfranqueado.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Cotacaoitensfranqueado extends Model
{
protected $table = 'cotacaoitensfranqueado as cif';
public $timestamps = false;
}
Controller/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);
}
...
}