php - 如何使用 id 和类型名称加载 Laravel 模型?

标签 php laravel model eloquent polymorphism

假设我有一个通过 Commentable 实现多态的模型 Comment。现在,如果我创建一个新的 Comment:

$comment->commentable_type = "Post";
$comment->commentable_id = 1;

我总是可以使用 $comment->commentable(); 获取 Post

我的问题是,如果我有一个模型的 typeid ,有没有一种方法可以实例化并加载该模型,而无需经历一些多态关系,例如 commentable

我知道在 Rails 中我可以做类似的事情:

post = "Post".constantize.where(id: 1).first

有没有办法在 PHP/Laravel 中做到这一点?

最佳答案

我确信有更好的方法,但你可以这样做并且它会起作用:

$modelType = "App\Post";

$model = new $modelType;

$model = $model->find(1);

关于php - 如何使用 id 和类型名称加载 Laravel 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36019822/

相关文章:

php - 如果文件夹中的文件名与数据库中的文件名不同,如何显示图像?

php - 使用 css 设置使用变量的 php 文本样式

php - MySQL 中的消息表,获取每个线程的最后一条消息

ruby-on-rails - 在模型 : how do I include helper dependencies? 中使用助手

Javascript 与 php 和 mysql 空值冲突(语法)

php - 如何配置本地 Web 服务器,以便它应该在一个 php 版本之间切换到另一个

database - 如何从 CodeIgniter 数据库迁移到 Laravel 数据库

php - Laravel 中间件格式化响应数组的键

php - 用于实时分析的 Redis 结构

java - 将 mongodb 查询结果转换为 java 中的数据模型类