[App\Post]에서 대량 할당을 허용하도록 채우기 가능한 속성에 [제목] 추가
Mysql에 데이터를 삽입하는 동안 다음 오류가 발생했습니다.
"[App\Post]에서 대량 할당을 허용하려면 채우기 가능한 속성에 [제목]을 추가하십시오."
내 코드는 다음과 같습니다.
$post = Post::create([
'title' => $request->input('title'),
'body' => $request->input('body')
]);
다른 방법으로 데이터를 삽입하면 정상적으로 작동합니다.다음 코드는 정상적으로 작동합니다.
//Create Post
$post = new Post;
$post->title = $request->input('title');
$post->body = $request->input('body');
$post->save();
코드의 상위 부분에서 오류가 발생하는 이유를 설명할 수 있는 사람이 있습니까?
모델의 채우기 배열에 제목을 추가합니다. 포스트(Post)를 통해 대량의 메소드를 생성하여 저장할 수 있습니다.
protected $fillable = ['title'];
의 protected $fillable = ['title'];다음과 같습니다.
protected $guarded = [];
내부에 아무것도 정의할 필요 없이 빈 배열로 둡니다.은 와정대니다입의 입니다.$fillable데이터베이스에 당신이 내부에서 지정한 필드를 제외한 모든 것을 수락하라고 말하는 것과 같습니다.$guardedvmdk
$fillable 모두에 대해
protected $guarded = ['id'];
대량 할당의 경우 모델(App\Post)에서 "채우기 가능한 배열"을 정의해야 합니다.
따라서 모델은 다음과 같아야 합니다.
class Post extends Model
{
protected $fillable = ['title','body']; //<---- Add this line
// ...
}
추가 정보:[https://laravel.com/docs/5.7/eloquent#mass-assignment ][1]
모델의 채우기 배열에 제목을 추가합니다.
protected $fillable = ['title'];
모델에 변수를 선언하지 않았기 때문에 이 오류가 발생했습니다. 클래스에서 변수를 그렇게 정의해야 합니다.
protected $fillable = ['title'];
모든 라벨 모델을 만들 때 채울 수 있는 특성이 없습니다.
필드 데이터를 승인하고 데이터베이스에 삽입할 수 있도록 하려면 먼저 모델에서 허용해야 합니다.
게시 모델에서 다음 행을 추가합니다.
protected $fillable = ['title'];
파티에 늦었지만 이런 문제가 있었고 해결책은 전혀 달랐습니다.
PostController에서 auth를 확인하고 다음을 찾았습니다.
Post::where('slug', $oldSlug)->first()->update([
'image_url' => $request->image_url,
'slug' => $newSlug,
'title' => $request->title,
'body' => $request->body,
'description' => $request->description,
'user_id' => auth()->user()->id,
'catagory' => $request->catagory,
]);
나는 왜 그것이 "image_url"을 좋아하지 않는지 이해하려고 노력하면서 "대량 할당을 허용하기 위해 채우기 가능한 속성에 ['image_url' 추가"를 외쳤습니다.
나는 내가 그것을 추가했다는 것을 깨달았습니다.->first()게시물을 하나만 받는 것을 확실히 하기 위해, 하지만 모든 슬러그가 유일하다는 것이 검증되고 검증되었기 때문에, 나는 그것을 떨어뜨렸습니다.->first().
Post::where('slug', $oldSlug)->update([
'image_url' => $request->image_url,
'slug' => $newSlug,
'title' => $request->title,
'body' => $request->body,
'description' => $request->description,
'user_id' => auth()->user()->id,
'catagory' => $request->catagory,
]);
마법처럼, 효과가 있습니다.
좀 더 고도의 지식을 가진 사람이 그것이 왜 효과가 있었는지 설명할 수 있다면, 저는 알고 싶습니다.감사합니다!
당신의 포스트 모델에는, 다음이 있을 것입니다.$fillable추가해야 하는 배열 변수입니다.
자세한 정보:"대량 배정"은 라라벨어로 무엇을 의미합니까?
한 가지 문제를 방지하기 위한 최선의 방법
Post::create($request->except('_token'));
여기에서 문서를 확인
또는 생성 방법을 사용하여 단일 PHP 문을 사용하여 새 모델을 "저장"할 수 있습니다.삽입된 모델 인스턴스(instance)는 다음과 같은 생성 방법으로 반환됩니다.
use App\Models\Flight;
$flight = Flight::create([
'name' => 'London to Paris',
]);
그러나 생성 방법을 사용하기 전에 모델 클래스에 채우기 가능한 속성이나 보호된 속성을 지정해야 합니다.이러한 속성은 기본적으로 모든 Enholder 모델이 대량 할당 취약성으로부터 보호되기 때문에 필요합니다.
Laravel 9 - [App\Post]에서 대량 할당을 허용하도록 채우기 가능한 속성에 [제목] 추가 - 오류
모델에 정의된 "채우기 가능한 배열" 대량 할당의 경우(App\Post)
따라서 포스트 모델은 다음과 같아야 합니다.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
protected $fillable = ['title','body','excerpt','is_published','image_path','is_published','min_to_read'];
}
나한테 효과가 있었어요!
언급URL : https://stackoverflow.com/questions/53793841/add-title-to-fillable-property-to-allow-mass-assignment-on-app-post
'programing' 카테고리의 다른 글
| 컨테이너 요소에 부유 요소가 포함되어 있으면 높이가 증가하지 않는 이유는 무엇입니까? (0) | 2023.08.10 |
|---|---|
| 날짜 시간에서 하루가 아닌 1시간 빼기 (0) | 2023.08.10 |
| Mysql : 데이터를 따라 데이터베이스 덤프 (0) | 2023.08.10 |
| JavaScript에서 상위 Iframe에 액세스하는 방법 (0) | 2023.08.10 |
| 정적 C 라이브러리에 어떤 기능이 있는지 확인합니다. (0) | 2023.08.10 |