[英]Laravel Pagination not working after setConnection() on eloquent model
我试图在 Laravel 8.x 中创建一个可以使用不同数据库(动态)的模型。 它目前通过在创建模型实例后设置连接来工作,使用 Laravel 内置的“setConnection”函数。 但是,模型上的分页不起作用。 我收到以下错误:
(PDOException(code: 42S02): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.times' doesn't exist
问题是“测试”数据库不是我当前告诉模型要连接的数据库。 我正在连接到“mysql_timer”。 分页是将数据库连接重置为默认值还是?
你可以在这里看到我的控制器代码:
public function getStats(Request $request)
{
$query = new Time;
$query->setConnection('mysql_timer');
$query = $query->with(['user']);
$data = $query->paginate($length);
dd($data);
}
还有我的“时间”模型:
class Time extends Model
{
use HasFactory;
protected $table = 'times';
public $timestamps = false;
protected $primaryKey = 'uid';
protected $fillable = [
'uid',
'mapid',
'runid',
'mode',
'style',
'rectime',
'recdate',
'strf_num',
'jump_num'
];
public function user()
{
return $this->hasOne(User::class, 'uid', 'uid');
}
}
您可以使用on($connection)
开始在给定连接上查询模型:
$data = Time::on('mysql_timer')->with(['user'])->paginate($length);
public function getStats(Request $request)
{
$query = DB::table("mysql_timer.times as times)
->join("users", "users.id", "=", "times.user_id")
->paginate($length);
dd($query);
}
你试过吗?
首先制作模型
php artisan make:time
走后模型
protected $connection = "mysql_timer";
protected $table = "times";
protected $guarded = [];
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
后去控制器
$query = Time::query()->with("user")->paginate($length);
dd($query);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.