이상한 문제가 있습니다.Laravel Eloquent가 (아마도 mysql) 데이터베이스에 속성을 저장하지 않습니다.
내 사용자 모델에 대한 모델 관찰자를 만들었습니다. 모델 관찰자는 '저축'중입니다. 내가 표시 할 사용자 모델의 맨 끝에 객체를 덤프하면 (이것은 laravel docs에 따라 저장되기 직전입니다) 객체에 대해 올바르게 설정된 모든 속성을 표시합니다. 올바른 속성이 설정되고 내 데이터베이스 테이블에 삽입됩니다. 그러나 저장이 완료된 후 데이터베이스에 쿼리하면 두 개의 필드가 테이블에 저장되지 않습니다.
내가 설정 한 속성과 데이터베이스에 저장 작업을 저장하기 위해 속성을 덤프 한 지점 사이에 앉아있는 코드가 없습니다. 그래서 나는 이것이 어떤 일이 일어날 지 모른다. 모든 이름이 올바르게 설정되어 있고 내가 말한 것처럼 특성이 데이터베이스에 삽입 된 것으로 나타나고 절대로 저장되지 않고 오류 메시지가 나타나며 열 속성 중 두 개만 저장되지 않습니다.
내 검색에서 $ fillable 속성을 설정해야한다는 내용이 많은 게시물이나 변수 이름이 잘못되었거나 설정 해제 된 것과 관련된 문제가 발견되었지만 $에 저장되지 않은 특정 속성이 이미 있으므로 fillable 배열은 예상되는 사전 저장과 똑같은 결과를 인쇄한다는 사실을 바탕으로 내가 겪고있는 문제와 관련이 있다고 생각하지 않습니다.
User::create(Input::all());
하고 데이터를 처리하는 관찰자는 다음과 같습니다 :
내가 전화 했어 저장되는되지 않은 두 값의 코드는
class UserObserver {
# a common key between the city and state tables, helps to identify correct city
$statefp = State::where('id',$user->state_id)->pluck('statefp');
# trailing zeros is a function that takes the first parameter and adds zeros to make sure
# that in this case for example, the dates will be two characters with a trailing zero,
# based on the number specified in the second parameter
$user->birth_date = $user->year.'-'.$user->trailingZeros($user->month, 2).'-'.$user->trailingZeros($user->day, 2);
if(empty($user->city)){
$user->city_id = $user->defaultCity;
}
$user->city_id = City::where('statefp', $statefp)->where('name', ucfirst($user->city_id))->pluck('id');
# if the user input zip code is different then suggested zip code then find location data
# on the input zip code input by the user from the geocodes table
if($user->zip !== $user->defaultZip){
$latlon = Geocode::where('zip', $user->zip)->first();
$user->latitude = $latlon['latitude'];
$user->longitude = $latlon['longitude'];
}
unset($user->day);
unset($user->month);
unset($user->year);
unset($user->defaultZip);
unset($user->defaultCity);
}
설정시, 실행시
dd($user);
모든 변수가 올바르게 설정되고 mysql 삽입 시도 화면에 표시됩니다. 올바른 값,하지만 그들은 그 시점을 지나서 지속되지 않습니다. 그것은 가능성이 mysql city_id 및 birth_date에 대한 값을 거부하는 것으로 보인다. 그러나, 왜 Laravel 또는 mysql에 문제가 있는지 이해할 수 없습니다.
사용자 개체를 채우고 항목을 저장하는 코드를 표시해야합니다. – Varedis