当前位置: 首页 > 知识库问答 >
问题:

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

阙佐
2023-03-14

我有一个名为“cotacaoitensfranqueado”的表,我想用cif来命名它,我知道我可以这样做DB::table('cotacaoitensfranqueado as cif')我在这个问题上看到了什么,但我想用我的模型来做。

    $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();

共有2个答案

扈韬
2023-03-14

我实现了如何解决这个问题,你可以在模型中做别名

Cotacaoitensfranqueado.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

Controller/cotacocontroller.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);
    }

    ...

}
解鸿运
2023-03-14

您不需要使用newQuery()(int)与Eloquent:

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

但是如果您真的想使用它,请使用query()来代替,因为newQuery()已被弃用。

 类似资料:
  • 问题内容: 我正在尝试从H2数据库表中获取一些值。执行我需要的查询是这样的: 其中“ creationDate”,“ paymentValue”,“ fxRate”是表“ payment”的列。CreationDate是一个时间戳,因此我只需要从中获取日期。当我尝试用Java编写它时 我得到了错误 我还尝试使用另一个名为GraphDto的对象,该对象的属性为datedate,value1和valu

  • 问题内容: 我的.aliases中具有以下别名: 并且我想在名称中包含字符串的所有文件中查找不区分大小写的内容: 这是我得到的: 有什么方法可以在xargs中使用别名,还是必须使用完整版本: 注意: 这是一个简单的示例。此外,我还有一些非常复杂的别名,无法轻易手动扩展。 编辑: 我用过,所以请指定答案是否特定于外壳。 问题答案: 别名是外壳特定的- 在这种情况下,很可能是bash特定的。要执行别名

  • 问题内容: 我正在尝试搜索文本和备注的多列,以查找某些我不想看到的特定短语和黑名单短语。 假设下表 前任。我想找到所有提到(在任何领域中)“苹果”但黑名单中的“苹果酱”的故事。 如何在where子句中使用别名?我找不到有关此主题的任何文档: 1)这种方法可行吗? 2)替代方法是否意味着我将在每次行迭代中执行多个字符串连接? 问题答案: 我不能在where子句中使用别名。 这种方法可行吗? 当然,将

  • 我是第一次尝试Laravel,并在我的Mac(OSX Mavericks)上安装了它,同时还安装了现有的MAMP 5.4。14(PHP5.4.14,Apache2)。我在MAMP上安装了各种其他项目(CakePHP),从别名目录提供文件时没有问题。然而,Laravel似乎不喜欢它附带的配置,也不喜欢我用于CakePHP的配置,我还没有找到解决方案。 在我的Apache配置中,我将其定义为我的别名:

  • 问题内容: 可以说我们正在使用Laravel的查询生成器: 我正在寻找等效于此SQL: 当我必须在很多选择和位置输入很多内容时(或通常在选择的列别名中也包含别名,并且在结果数组中使用别名时),这将特别有用。没有任何表别名,我需要输入更多的内容,并且所有内容的可读性也大大降低。在laravel文档中找不到答案,有什么想法吗? 问题答案: Laravel使用来支持表和列的别名。尝试 让我们看看它的强大

  • 假设我们正在使用Laravel的查询生成器: 我正在寻找一个等效的SQL: 当我必须键入大量select和WHERE(或者通常在select的列alias中包含别名,并且它在结果数组中使用)时,这将特别有用。如果没有任何表别名,我需要输入更多的内容,所有内容的可读性都会降低。在laravel文档中找不到答案,有什么想法吗?