如何解决Laravel,如何通过使用相同的类模型来调用没有硬编码的表名?
表名是我这样的MySQL
energydata_1001
energydata_1002
energydata_1003
energydata_1004
energydata_1005
“ energydata_prefix”是另一个表的ID 因此表名称在我的数据库表中会很多,具体取决于用户的选择。列表是相同的。
这是我的EnergyData模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class EnergyData extends Model
{
protected $table = 'energydata_';
}
这是我的EnergyData控制器,如何获取表名称,例如energydata_1001
namespace App\Http\Controllers;
use App\EnergyData;
use Illuminate\Http\Request;
class EnergyDataController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$gettableID = 1001;
return view('energydata.index',compact('energydata_1001'))
}
解决方法
我想如果需要的话,您可以在模型上设置一个静态变量,并使用它来生成表名:
class Something extends Model
{
protected $table = 'energydata_';
static $tableId = null;
public function getTable()
{
return $this->table . static::$tableId;
}
public static function tableId($tableId = null)
{
if (is_null($tableId)) {
return static::$tableId;
}
static::$tableId = $tableId;
}
}
Something::tableId('1001');
这是可能的,但可能不是最佳解决方案。
,雄辩的模型具有getTable
函数,因此您可以获取如下模型的表:
(new EnergyData())->getTable();
,
如果要在表名中动态添加前缀,则需要使用查询生成器。将'energydata_'分配给变量并连接前缀并使用查询生成器调用
public function index()
{
$gettableID = 1001;
$table_name = 'energydata_' . $gettableID;
$users = DB::table($table_name)->get();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。