2017-12-08 3 views
0

에 테이블과 관련 테이블을 업데이트 나는 관계가 : 는 Laravel에서 Laravel

class Company extends Model 
{ 
    protected $fillable = [ 
     'name', 'nip', 'email', 'phone', 'address_id' 
    ]; 

    public function address() { 
     return $this->belongsTo('App\Address'); 
    } 
} 

class Address extends Model 
{ 
    protected $fillable = [ 
     'street', 'city', 'post_code', 'country', 'state', 
    ]; 

    public function companies() { 
     return $this->hasMany('App\Company'); 
    } 
} 

및 CompaniesController.php에 나는 테이블을 업데이트하고 싶어. 내 코드는 다음과 같습니다 :

public function update(Request $request, $id) 
    { 
    Company::where('id', $id)->update([ 
      'name' => $request->name, 
      'email' => $request->email, 
      'phone' => $request->phone, 
      'nip' => $request->nip, 
     ]); 
} 

어떻게이 회사의 주소를 업데이트 할 수 있습니까?

답변

0

ID가 기본 키인 경우 전자는 where 대신 find을 사용해야합니다. 전자는 하나의 행만 검색한다는 것을 보장하기 때문입니다.

그런 다음, 다음 코드를 사용하여, 당신의 회사 모델의 관계를 조회 할 수 있습니다,

$company = Company::find($id); 
$company->update([ 
     'name' => $request->name, 
     'email' => $request->email, 
     'phone' => $request->phone, 
     'nip' => $request->nip, 
]); 
$company->address()->update([ 
    'street' => 'street value', 
    'city' => 'city value', 
    'post_code' => 'post_code value', 
    'country' => 'country value', 
    'state' => 'state value', 
]); 

laravel docs

+0

확인을 참조하시기 바랍니다 감사합니다,하지만 난 실수 있습니다 "FatalThrowableError 을 부울 (boolean) "의 멤버 함수 address()를 호출하십시오. 내 관계가 좋지 않습니까? – Magda

+0

아니. 그것은 내 실수 였고, 업데이트가 모델 자체가 아니라 업데이트가 성공했는지 여부를 반환하는 것처럼 보입니다. 코드를 변경했습니다. –

+0

다 잘 됐습니다. 감사합니다. :) – Magda