假设我有2个模型Poll
和Answer
。据我所知,我可以通过one-to-many
在它们之间建立$this->hasMany('Answers')
关系 - 这将使我能够从answers
模型访问数据库表Poll
。
但是,是否有可能在Poll
模型和answers
表之间创建此关系,而无需创建Answer
模型?
修改
其他问题:
答案 0 :(得分:1)
创建没有Eloquent模型的关系没有意义。您可以使用数据库外键在没有Laravel的情况下执行此操作。 Eloquent关系(以及一般的ORM)的目的是在调用关系时获取结构化对象。
$answers = $poll->answers;
echo $answers->last()->title;
我们使用OOP来操作原始数据而不是对象,不将数据库映射到实际对象通常是不好的做法。唯一的例外是"技术表"比如日志,会话或工作队列。
表现问题颇具争议。在第一级,是的,您可以通过使用原始请求而不是ORM请求来提高性能,因为您必须管理每个细节。但是在专业的工作中,使用ORM总是更好,因为可读性和可维护性的提高是巨大的。只有在需要使用简单/急切加载管理(http://laravel.com/docs/4.2/eloquent#eager-loading)等优秀工具时,您才可以将时间花在优化上。
最后,如果您想在ORM方法之间编写原始SQL请求,可以使用Eloquent(http://laravel.com/docs/4.2/queries#raw-expressions)来完成。
答案 1 :(得分:0)
1. But is there a possibility to create this relationship just between the Poll model and a answers table, without creating Answer model?
不,没有。您可以使用join
来实现您想要的目标。
2. Is this considered a bad practice?
不是真的,但我不明白你为什么不能成为Answer
模特课。它使您的代码更具可读性和灵活性。
If i don't need all the advantages that using model gives me in a specific table, will working directly with a db table will enhance preformance?
我不确定,但我认为查询比使用Eloquent更快,我不会说它更好。