【发布时间】:2019-06-07 23:03:23
【问题描述】:
在 Laravel 5.8 中,我尝试为模型设置不同的连接。
我在config/database.php(mysql1 和mysql2)中设置了 2 个数据库连接
首先我做了一个MyModel 类:
namespace App\Models;
class MyModel
extends \Illuminate\Database\Eloquent\Model {
public static function sqlselect($sql) {
$result = DB::select(DB::raw($sql));
return $result;
}
}
然后我创建了一个派生自这个类的新模型,并设置了它应该使用的连接:
namespace App\Models;
class FooModel extends \App\Models\MyModel {
protected $connection = 'mysql2';
}
当我尝试使用这个FooModel 时,我希望它使用mysql2 连接,但它没有。
use App\Models\FooModel;
$sqlresult = FooModel::sqlselect('SELECT * FROM foo');
给出foo 表不在数据库中的错误,因为它仍然尝试使用默认的mysql1 连接。
有什么方法可以做到这一点,同时仍然保持一切静止?
【问题讨论】:
-
DB 不会自动在 Model 中使用连接,如果需要,只需使用 Model 执行查询
标签: php laravel eloquent laravel-5.8