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和实际选择、编辑、插入数据等的文档。
编辑
$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)
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |