【问题标题】:How to specify a specific connection (or the database name) for Yajra Datatables in Laravel 5如何在 Laravel 5 中为 Yajra 数据表指定特定的连接(或数据库名称)
【发布时间】:2019-07-31 18:13:10
【问题描述】:

我正在使用带有 Jajra/Datatables 的 Laravel 5

项目使用3个数据库,1个是MySQL,2个是商业SQL数据库。

SQL 数据库中的表具有完全相同的名称。

如果我想显示我在控制器中使用的 MySql 数据库中的表:

return  Datatables::of(DB::table('coeficientVR_VanzariNoi')
        ->get(['id','marca','model','capacitate','combustibil', 'caroserie', 'altaClasaSchimb', 'coeficient',
              ]))->make(true);

而且效果很好!

如何从其中一个 SQL 数据库中指定一个表?

我有与之关联的模型,并且模型具有指定的连接。

一个名为“版本”的表的示例:

class version_Jato extends Model
{
    //
    protected $connection = 'sqlJato';
    protected $table = 'version';
    protected $primaryKey = 'vehicle_id';

....

所以我需要指定 SQL 数据库但我不知道如何。

感谢您的宝贵时间!

【问题讨论】:

  • 什么是SQL数据库? SQL Server?
  • 是的,很抱歉造成混乱。

标签: mysql sql-server laravel-5 datatables yajra-datatable


【解决方案1】:

如果您已经在每个模型上定义了$connection,您可以直接查询模型,即:

return DataTables::eloquent(App\version_Jato::query())
    ->make();

您可以在yajra/datatables docs 中了解它。

【讨论】:

  • 谢谢先生!如何使用 App\version_Jato::query() 加入或左加入其他表?
  • 我可以为第一个模型设置别名吗?
  • 如果您在模型上定义这样的关系,则可以使用联接:App\version_Jato:::with('your_relationship')->get(),您可以在此处阅读:laravel.com/docs/5.8/eloquent-relationships。或者直接加入:App\version_Jato:::join(...)->select(...)->get();laravel.com/docs/5.8/queries#joins
  • 感谢您的指导,无论如何,select 和 get() 都没有被定义为 eloquent 的方法。在这种情况下,我正在考虑静态地进行查询并发送带有视图的完整集合并放弃 Ajax 加载。
  • 它们是在 eloquent 调用静态方法时调用的查询构建器上定义的,如果您愿意,您可以始终以 query() 开头,即:App\version_Jato::query()->select()-get(); 应该相同。
猜你喜欢
  • 1970-01-01
  • 2017-06-26
  • 2018-04-27
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 2021-02-14
相关资源
最近更新 更多