Laravel의 ORM에 지루한 문제가 있습니다.Laravel : belongsTo() 관계 일대일 관계가 아닌 일대 다 관계를 가정합니다.
class Pages extends Eloquent {
protected $guarded = array('id','config_id');
public function template()
{
return $this->belongsTo('Templates', 'templates_id');
}
public function updateUser()
{
return $this->belongsTo('Users', 'updated_by');
}
이 지금은 같은 간단한 방법으로 템플릿 관련 항목에 액세스 할 수 있습니다 :
이 같은 여러 관계를 가진 모델이
$this->template->name;
을 그리고 그것은 밖으로 작동 왜냐하면 Laravel의 ORM은 일대일 관계라고 가정하고 내부적으로 first() 메서드를 호출하기 때문입니다.
그러나 updateUser를 사용하여 동일한 작업을 시도해도 실패합니다. 즉, 비 객체에 이름을 호출 할 수 없다는 오류가 반환됩니다.
그러나 나는 시도 할 경우이 :
$this->updateUser()->first()->name;
작동하지만, 나에게 느낌이 좋지 않습니다.
내 질문은 Laravel의 ORM이 belongsTo()로 정의 된 관계가 일대일 또는 일 대 다인지 결정하는 방법입니다. 필요한 행동을 강요 할 수있는 방법이 있습니까?
감사합니다.
당신이'hasOne의()를 사용하는'다른 관계를 설정하는 방법? [documentation] (http://four.laravel.com/docs/eloquent#one-to-one)을 읽으셨습니까? – naththedeveloper
예, 문서를 읽었습니다. 단일 사용자가 많은 페이지의 업데이터 일 수 있기 때문에 hasOne()을 사용하지 않았습니다. 이는 사용자 관점에서 일대 다 관계가 있지만 페이지의 일대일 관계입니다. – Ingro