【问题标题】:Is it possible to work in a model with query builder using Laravel?是否可以使用 Laravel 在带有查询构建器的模型中工作?
【发布时间】:2023-03-29 13:00:01
【问题描述】:

我想知道是否可以使用查询生成器在模型中工作以在两个表之间建立连接,我不想使用 eloquent

这是我的模型

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use DB;

class Tbl_Perimetro extends Model
{
puplic function perimetros(){
$carteras = DB::table('tbl_perimetros')
        ->join('tbl_equipo_postventaatcs', 'tbl_equipo_postventaatcs.id', '=', 'tbl_perimetros.postventaatc_id')
        ->join('tbl_lista_carteras', 'tbl_equipo_postventaatcs.carteras_id', '=', 'tbl_lista_carteras.id')
        ->get();

return $carteras;
}
}

【问题讨论】:

  • 我想在模型中使用Query Builder来连接表,我不想使用雄辩的hasMany或belongsTo的方法
  • perimetros()方法中缺少return,可以通过$t = new Tbl_Perimetro(); $t-&gt;perimetros();调用该方法
  • 这样的?我更新了我的问题.. 但我仍然一无所获
  • 你把方法放在模型里为什么你return view,你需要返回$carteras
  • 我不太懂你...类似的东西?我希望控制器和模型与视图 .blade 一起工作

标签: laravel eloquent laravel-query-builder


【解决方案1】:

如果您只想使用查询生成器,您可以这样做。但我真的建议使用雄辩的方法。 此外,了解模型的 mutators、appends 和 scopes 选项也很重要,这些选项比单独的查询构建器可以为您提供更多帮助。

其他约会:

  • 在此模型中,DB::table('tbl_perimetros') 可以替换为 $this
  • 不要忘记return 方法。
  • 尝试 protect $appends = ['perimetros'] 并将方法重命名为 getPermietrosAttribute 以将 perimetros 作为模型对象中的项目返回。

【讨论】:

  • 非常感谢您的回答..我如何在一个有效的模型中使用查询生成器转换我的代码..因为我遇到了很多错误
  • 首先,什么错误?一般来说,从迁移开始,良好的迁移是建立良好模型关系的关键。在开始编写代码、设计表和关系之前绘制您的数据库。将此从头转移到具有正确字段类型和外键的迁移。变形关系很强大,但需要更多关注。第二步是编写模型。开始编写您在迁移中构建的关系。你可以使用其他东西,比如我们的 appends 的 mutators 来实现其他数据绑定。
  • 在这种情况下,它似乎是 3 种不同的模型:carteras、postventaatcs 和 perimetros,所有这些表都应该有没有 tbl_ 前缀的英文名称。 eloquent 使用表中的名称来自动处理关系。同理,外键也应该是英文的,但是你在 then 中加上 _id 是正确的。
猜你喜欢
  • 2017-06-24
  • 1970-01-01
  • 2020-04-20
  • 2017-08-05
  • 1970-01-01
  • 2015-05-23
  • 2017-03-15
  • 2013-02-23
  • 2010-09-11
相关资源
最近更新 更多