내가 다 대다 관계과 같이가 사용자 테이블의 user_id에 대한 외래 키로 존재합니다. 두 테이블 모두 InnoDB이다.Laravel 4 웅변 ORM은 :</p> 차단제와 blocked_user_id 복합 기본 키입니다 <pre><code>user - user_id user_blocks - blocker_user_id - blocked_user_id - unblocked (Timestamp) </code></pre> <p>, 모두 : 복합 기본 키가있는 피벗 테이블 항목을 업데이트하는 방법
나는 다음을 수행하려고 할 때 : 그것은 생각하는 것 같다
$user = User::find(1)
$blocked_user = $user->blocked()->where('blocked_user_id', 2)->first();
$blocked_user->unblocked = User::freshTimestamp();
$blocked_user->save();
차라리 user_blocks 테이블보다, 사용자 테이블에 열을 업데이트하고 싶습니다. 이것은 단순히 사용자 테이블이 존재하지 않는 열 unblocked
으로 업데이트하려고 시도하는 SQL 오류입니다.
예에서 $ blocked_user에 대한 할당에 ->pivot
및 ->pivot()
을 추가하려고했습니다. 첫 번째 오류는 Eloquent \ Model :: performUpdate, Call to a member function update() on a non-object
에서 발생하며 후자는 Eloquent \ Builder :: __ 호출에서 call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Database\Query\Builder' does not have a method 'pivot'
을 제공합니다.
: 나는 복합 기본 키 웅변 모델을 정의하는 방법을 알고하지 않는 한 user_blocks 테이블에 대한 모델이 없습니다
public function blocked() {
return $this->belongsToMany(
'User',
'user_blocks',
'blocker_user_id',
'blocked_user_id'
)->withPivot('unblocked');
}
(I 어디서나 수색했는데 누군가가 묻는 질문이 아닌 것 같습니다.)
나는 스키마가 Eloquent에 최적화 된 것보다 적다는 것을 알고 있지만 이것은 사전 설정된 스키마로 Codeigniter 프로젝트에 웅변적이다. Codeigniter 모델 사용에 대한 유쾌한 경험.
중요하지만 누락 된이 기능을 구현하려고하는 풀 요청을 만들었습니다 : https://github.com/laravel/framework/pull/1891 – igorsantos07