PHP Laravel 口才多数据库,居然选东西

Rom*_*man 3 php database laravel eloquent

我在 Laravel 项目中使用了两个数据库连接。

我需要修改两个数据库中的表。

我已经设置了一切,现在我正在尝试从第一个和第二个数据库中获取数据,但是文档几乎没有提供有关如何操作的信息,我只发现了这个:

$users = DB::connection('foo')->select(...);
Run Code Online (Sandbox Code Playgroud)

某处有更多资源吗?我找不到任何东西。

到目前为止我明白,如果我使用多个数据库,我就不能再使用 eloquent 了吗?至少我不能将 eloquent 用于第二个数据库,这不是默认的。

为了测试,我在具有不同数据的两个数据库上创建了相同的表。但是我不能查询数据,我总是收到这个错误:

Undefined property: Illuminate\Database\MySqlConnection::$User
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

 $users1 = DB::connection('mysql_live')->select('SELECT * FROM users');
 info($users1);

 $users2 = DB::connection('mysql')->User::all();
 info($users2);
Run Code Online (Sandbox Code Playgroud)

我也试过:

$users1 = DB::connection('mysql_live')->User::all();
Run Code Online (Sandbox Code Playgroud)

最好是关于如何正确使用DB::connection和实际选择、编辑、插入数据等的文档。

编辑

  • 我实际上如何从两个数据库中选择所有用户?
  • 对于第二个数据库,我永远不需要创建新的列或表,我只需要更新数据,那里可能不需要 eloquent,这意味着我总是需要执行原始 SQL,对吗?如果我使用 eloquent 我还需要创建模型吗?

pr1*_*nc3 6

$users1 = DB::connection('mysql_live')->table('users')->get()->toArray();
Run Code Online (Sandbox Code Playgroud)

对于第二个查询,您可以执行相同的操作。没有理由为此使用 eloquent 模型。但是,如果您想这样做:

在您的 User 模型中,您必须定义您的连接

 protected $connection = 'mysql'; //which is the default as well
Run Code Online (Sandbox Code Playgroud)

而且您还必须定义要检索的字段,例如:

protected $fillable = ['email','username'];
Run Code Online (Sandbox Code Playgroud)

真正重要的是隐藏敏感字段,如密码等。在那里你可以使用另一个数组:

protected $hidden = ['password'];
Run Code Online (Sandbox Code Playgroud)

然后你可以使用 eloquent 像:

$users = User::get();
Run Code Online (Sandbox Code Playgroud)