从 Laravel 4 中的不同 PostgreSQL 模式中选择表

Posted

技术标签:

【中文标题】从 Laravel 4 中的不同 PostgreSQL 模式中选择表【英文标题】:Select table from a different PostgreSQL schema in Laravel 4 【发布时间】:2013-03-24 16:56:12 【问题描述】:

在 Laravel 4 中,如何使用来自另一个模式(database.php 中定义的默认模式除外)的表进行查询?

L4 文档没有显示出任何能够做到这一点的迹象...

【问题讨论】:

嗨,你找到答案了吗? 【参考方案1】:

http://laravel.com/docs/database

在连接数组中定义另一个架构配置

'pgsql' => array(
    'driver'   => 'pgsql',
    'host'     => 'localhost',
    'database' => 'database',
    'username' => 'root',
    'password' => '',
    'charset'  => 'utf8',
    'prefix'   => '',
    'schema'   => 'public',
),
'newConnection' => array(
    'driver'   => 'pgsql',
    'host'     => 'localhost',
    'database' => 'database',
    'username' => 'root',
    'password' => '',
    'charset'  => 'utf8',
    'prefix'   => '',
    'schema'   => 'public',
),

然后根据文档切换到它:

$users = DB::connection('foo')->select(...);

【讨论】:

请问如何使用这个:$users = DB::connection('foo')->select(...); foo 指的是pgsql', mysql`等吗? 这如何回答访问同一数据库中不同模式的问题?您刚刚说了如何配置多个连接并且都引用相同的架构(公共)。 OP 询问您将如何进行这样的查询:select * from security.user inner join company.person on (...) 他想知道您如何同时访问安全模式和公司模式。跨度> 【参考方案2】:

问题是:如何在查询中使用备用架构?

答案是定义另一个模式,然后选择连接到它。 示例:

$schema_conn = DB::connection('ARRAY_KEY_FOR_OTHER_SCHEMA_CONFIG');
$query = $schema_conn->where('property', 'value')->get();

【讨论】:

以上是关于从 Laravel 4 中的不同 PostgreSQL 模式中选择表的主要内容,如果未能解决你的问题,请参考以下文章

从 Laravel 4 中的不同 PostgreSQL 模式中选择表

Postgres 和 Laravel 如何将列从字符串类型更改为整数?

使用 Laravel Blade 从 Postgres 显示 JSON 数据

Laravel QueryBuilder 中的 Postgres 函数 WITH

将 postgres 与 laravel 连接起来

Laravel:PHP Artisan Migrate 抛出 PDO 异常:找不到驱动程序(Postgres)