Уведомления базы данных Laravel Значения, не сохраняющиеся в объекте модели при сохранении в базе данных

Поэтому я пытаюсь сохранить уведомления в базе данных. Но как только объект модели со значениями передается в класс Notification, данные не сохраняются в нем, и я получаю следующее сообщение

Подсветка \ База данных \ QueryException (HY000)
SQLSTATE [HY000]: общая ошибка: 1364 Поле ‘post_title’ не имеет значения по умолчанию (SQL: вставить в posts (updated_at,
created_at) значения (2017-09-21 15:58:01, 2017-09-21 15:58:01))

Теперь у меня есть Post_title и Post_description но они не показаны здесь.

Ниже приведен мой класс уведомлений, странно, я получаю всю информацию, связанную с сообщениями в конструкторе, если я получаю дамп Сообщение объект

<?php

namespace App\Notifications;

use Carbon\Carbon;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

class PostCreated extends Notification
{
use Queueable,Notifiable;

protected $post;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($post)
{
$this->post = $post;
}

/**
* Get the notification's delivery channels.
*
* @param  mixed  $notifiable
* @return array
*/
public function via($notifiable)
{
return ['database'];
}
/**
* Get the array representation of the notification.
*
* @param  mixed  $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
'post_id' => $this->post->id,
'user_id' => $this->post->user_id,
];
}
}

Дайте мне знать, если потребуется дополнительная информация.
РЕДАКТИРОВАТЬ: Пост модель

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Spatie\Feed\FeedItem;

/**
* @property array|string post_title
* @property array|string post_description
* @property array|string is_featured
* @property array|string is_rejected
* @property mixed id
*/
class Post extends Model implements FeedItem
{
use SoftDeletes;

/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at','created_at','updated_at','starting_time','ending_time'];
protected $fillable = [
'post_title', 'post_description', 'ebook_title', 'ebook_link', 'country_id', 'state_id', 'diary_id'
];

public function user()
{
return $this->belongsTo('App\Models\User');
}

public function hashTags()
{
return $this->belongsToMany('App\Models\HashTag', 'hash_tag_post', 'post_id', 'hash_tag_id')->withTimestamps();
}

public function getRelatedHashTagsAttributes()
{
return $this->tags->pluck('id');
}

public function categories()
{
return $this->belongsToMany('App\Models\Category', 'category_post', 'post_id', 'category_id')->withTimestamps();
}

public function state()
{
return $this->belongsTo('App\Models\Category', 'state_id', 'id');
}

public function country()
{
return $this->belongsTo('App\Models\Category', 'country_id', 'id');
}

public function sliders()
{
return $this->belongsToMany('App\Models\Slider', 'slider_post', 'post_id', 'slider_id')->withTimestamps();
}

public function comments()
{
return $this->hasMany('App\Models\Comment');
}

public function postUploadedDatas()
{
return $this->hasMany('App\Models\PostUploadedData');
}

public function likes()
{
return $this->hasMany('App\Models\Like');
}

public function hasAction($user)
{
if ($this->likes()->where('user_id', $user)->first())
{
return true;
}
return false;
}

public function diaries()
{
return $this->belongsToMany('App\Models\Post', 'diary_post', 'post_id', 'diary_id');
}

public function getFeedItemId()
{
return $this->id;
}

public function getFeedItemTitle()
{
return $this->post_title;
}

public function getFeedItemSummary()
{
return $this->post_description;
}

public function getFeedItemUpdated()
{
return $this->updated_at;
}
public function getFeedItemAuthor() : string
{
return "";
}

public function getFeedItemLink()
{
return action('TravellersInn\PostController@getFeedItems', [$this->url]);
}

public function getTipsFeed()
{
return Post::where('contant_id','LIKE','%'.'3'.'%')->get();
}
public function getImagesFeed()
{
return Post::where('contant_id','LIKE','%'.'2'.'%')->get();
}
public function getVideosFeed()
{
return Post::where('contant_id','LIKE','%'.'4'.'%')->get();
}
public function getEbooksFeed()
{
return Post::where('contant_id','LIKE','%'.'6'.'%')->get();
}}

1

Решение

Есть несколько решений для этого в зависимости от того, что вы хотите.

Если вы всегда хотите значение для post_title а также post_description затем вам нужно добавить некоторую проверку и убедиться, что значения передаются в ваш контроллер для установки в БД и что ваша модель будет заполнять эти значения.

Увидеть https://laravel.com/docs/5.5/validation

Однако, если заголовок и описание не всегда заданы, это может быть ваша база данных, а не ваш код. Если эти поля могут быть неиспользованными время от времени, то вы хотите установить для каждого поля значение по умолчанию » или NULL.

Что-то вроде

ALTER TABLE <table> ALTER j SET DEFAULT '';

в заключение

Я не думаю, что вам нужен этот конструктор, но я могу ошибаться.

1

Другие решения

Либо поставить значение post_title как пусто или обновите схему, чтобы установить значение по умолчанию как пустой ->default("");

колонка post_title Всегда нужно любое значение, если вы не установили значение по умолчанию.

Также убедитесь, что вы добавили post_title в вашей модели

protected $fillable = ['post_title',....];// all columns
0

По вопросам рекламы [email protected]