我正在一个项目中,我必须与Wordpress和其他系统的某些表格集成。为了为我的Laravel项目设置数据库,我选择使用table前缀,对于我的项目表,它可以正常工作。
我的问题是,当我不得不使用Laravel处理来自其他系统的表时。例如,下面的查询向其添加我项目的表前缀:
$item = DB::table('cnp_item')
->where('code', $row[1])
->first();
不是查询cnp_item
表,而是查询laravel_cnp_item
表,该表不存在。
我知道这很有意义,因为我配置了表前缀。我的问题是,在某些查询中是否可以做些什么使它忽略我的表前缀。
感谢您的帮助
答案 0 :(得分:0)
您可以在config/database.php
中定义一个不同的连接,而忽略prefix
设置:
'connections' => [
'mysql' => [
...
'prefix' => 'laravel',
...
], 'alternate' => [
...
'prefix' => '',
...
]
],
然后,如果要查询不具有该连接的表,请使用DB::connection()
快速切换到该表:
$item = DB::connection('alternate')->table('cnp_item')->where('code', $row[1])->first();
或者,如果您使用Model
,则应该能够定义connection
和table
,因此您只需要做:
class CNPItem extends Model {
protected $connection = 'alternate';
protected $table = 'cnp_items';
...
}
然后,您只需要像这样查询:
$item = CNPItem::where('code', $row[1])->first();