我有以下表格,其中包含以下字段:
person :id,lastname,firstname
phoneboookentry :id,name
我有以下两种模式:
class Person extends Eloquent
{
public static $table = 'personphonebookentries';
public function phonebookentry()
{
return $this->has_one('Phonebookentry', 'id');
}
}
class Phonebookentry extends Eloquent
{
public function person()
{
return $this->belongs_to('Person', 'id');
}
}
我无法弄清楚如何获得具有特定名字或特定数字的所有人。
我试过了:
Person::or_where('firstname', 'LIKE', '_name_')->phonebookentry()->or_where('number', '=', '_number_')->get();
我需要帮助才能找到完成方法:)
感谢您的帮助!
答案 0 :(得分:2)
在这种情况下,一个简单的关系不会有帮助,因为你想根据第二个查询的关系约束People结果。
使用此架构,您需要进行连接,如果您将person_id添加到phoneboookentry表,则需要执行此操作:
Person::join('phoneboookentry', 'person.id', '=', 'phoneboookentry.person_id')
->where('person.firstname', 'LIKE', "%$name%")
->or_where('phoneboookentry.number', '=', $number)
->get('person.*');
但是对于每一对一的关系,人们都非常注重思考模式,你很有可能会更好地合并表格。非正规化通常没有帮助。
还有一些其他要点:
or_where()
都是不必要和错误的,只需在必要时使用它。phonebookentry()
)您必须拥有结果模型。