matmaxanh / laravel-nullable-field by bluecode

This trait allows you to easily flag attributes that should be set as null.
7
2
2
Package Data
Maintainer Username: bluecode
Package Create Date: 2015-11-05
Package Last Update: 2015-11-05
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-12-22 03:19:06
Package Statistics
Total Downloads: 7
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 2
Total Watchers: 2
Total Forks: 0
Total Open Issues: 0

Nullable database fields for Laravel

Often times, database fields that are not assigned values are defaulted to null. This is particularly important when creating records with foreign key constraints.

Note, the database field must be configured to allow null.

More recent versions of MySQL will convert the value to an empty string if the field is not configured to allow null. Be aware that older versions may actually return an error.

Laravel (5.1) does not currently support automatically setting nullable database fields as null when the value assigned to a given attribute is empty.

Installation

This trait is installed via Composer. To install, simply add it to your composer.json file:

{
	"require": {
		"bluecode/laravel-nullable-field": "~0.1"
	}
}

Then run composer to update your dependencies:

$ composer update

In order to use this trait, import it in your Eloquent model, then set the protected $nullable property as an array of fields you would like to be saved as null when empty.

<?php

use Bluecode\Traits\NullableField;
use Illuminate\Database\Eloquent\Model;

class UserProfile extends Model
{
	use NullableField;
	
	protected $nullable = [
		'tel',
		'address'
	];
}

Now, any time you are saving a UserProfile profile instance, any empty attributes that are set in the $nullable property will be saved as null.

<?php

$profile = new UserProfile::find(1);
$profile->tel = ' '; // Empty, saved as null
$profile->address  = '10 A Street';
$profile->save();

Support

If you believe you have found an issue, please report it using the GitHub issue tracker, or better yet, fork the repository and submit a pull request.

If you're using this package, I'd love to hear your thoughts. Thanks!