2017-11-07 4 views
0

1 부 PostgreSQL의에서 JSON의 안부를 업데이트하는 데 문제가 : 홈페이지 질문Laravel 웅변

colours_tab 테이블 (PostgreSQL의 9.6)에, 나는 열 유형 JSONB의 colours_json_col라고합니다. 내가 전에 언급 한 테이블에 새 레코드를 만들어 내 Laravel 컨트롤러에 다음 코드를 가지고 :

$colour_rec = new ColoursModel(); 
$colour_rec -> colours_json_col = ['fruits' => ['apple' => 'pink'] ]; 
$colour_rec -> update (['colours_json_col->fruits->apple' => 'green']); 
$colour_rec -> saveOrFail(); 

예외 오류 또는 throw하지 않습니다 위의 코드, 아직 그에게 새로운 기록을 실행 한 후 내 데이터베이스에는 다음 JSON 데이터가 포함되어 있습니다.

분명히 내가 원하는 것은 핑크색이 아닌 초록색 사과입니다. 여기 문서 (https://laravel.com/docs/5.5/queries#updates)는 내가 '녹색'으로 설정하기 위해 올바른 일을하고 있다고 제안합니다. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니?

2 부 : 보너스 질문

erroring에서 위의 코드를 방지하기 위해, 내가 모델에 $fillable로 열 colours_json_col을 선언해야했다 :

protected $fillable = ['colours_json_col']; 

난 몰라 가능하다면 열을 $fillable으로 설정하고 싶습니다. 따라서 update() 함수를 호출하지 않고도 값을 업데이트 할 수 있습니까? 하나의 질문의 두 부분 응답

답변

0

:

$colour_rec = new ColoursModel(); 
$colour_rec -> colours_json_col = ['fruits' => ['apple' => 'pink'] ]; 
$colour_rec -> setAttribute ('colours_json_col->fruits->apple', 'green'); 
$colour_rec -> saveOrFail(); 

지금까지 내가 말할 수있는, 설득력있는 문서화되지 않은 기능이 될 것으로 보인다.