- Added
Model::destroy
method to Eloquent. - Touch owning models on delete.
- Added
Str::macro
method. - Calling
update
on a Model instance will fill and update that model. - Allow specification of methods when pushing to Queue (
Queue::push('Class@method')
). - Removed HTML from default formatting in MessageBag.
- Made Eloquent
deleting
event halting. - Added
Auth::basic
for quickly implementing HTTP Basic authentication. - Use Predis as our Redis back-end. Supports pipelining, client side sharding / clustering.
- Implement sectionable caching across all drivers which support incrmeent / decrement.
- Added
Redirect::home
method from Laravel 3. - Added
Crypt::setKey
,Crypt::setCipher
, andCrypt::setMode
. - Allow "lazy" eager loading from an individual model:
$user->load('orders.lines');
. - Added
renameColumn
support to schema builder. - Added
dropColumn
support to SQLite schema builder. - Added
url
option to configuration for use by the Artisan CLI. dropColumn
now supports dynamic argument lists.- Pass
route
andrequest
to Closure based controller before filters. - Added
Auth::basicStateless
method for easier API integration with basic auth. - Renamed
Auth::stateless
andAuth::basicStateless
toAuth::once
andAuth::onceBasic
. - Added named view implementation which was in Laravel 3.
- Migrated entire session back-end to Symfony HttpFoundation Session. The
native
driver should now be used in place of thecookie
driver. All other drivers are available and work the same. New sessions will not be backwards compatible after updating. - Renamed
Session::getToken
toSession::token
. - Added a few more helper methods to the
Collection
class.
- Added
Model::creating(Closure)
andModel::updating(Closure)
methods for hooking into Eloquent save events. - Added
Model::saving(Closure)
andModel::saved(Closure)
methods for hooking into Eloquent save events. - Added
Event::queue
andEvent::flush
. - Added a
Str
class in support component. Adopted Patchwork UTF-8 to provide solid UTF-8 handling for the framework. - Allow Eloquent attributes to be accessed by camelCase in addition to snake_case.
- Added
App::environment
method. - Added
resolving
method to IoC container for catching resolutions. - Added
shouldReceive
andswap
methods to facade. - Added
bound
method to the IoC container. - Utilize
checkdate
in thedate
validation rule to make sure the date is actually valid. - Allow controller actions in base classes to be routed via
Route::controller
. - Encode queue payloads as JSON instead of serializing, to make the Queue place nicely with other languages.
- Added
Model::created(Closure)
andModel::updated(Closure)
methods for hooking into Eloquent post-save events. - Added
Model::boot
static method for a one time "booting" method for models. - Passing
null
into awhere
call will now short-cut intowhereNull
. - Changed Blade
{{ }}
to not escape. Made the triple braces escape. - Added
DB::getName
to get the configured name of the connection. - Made Eloquent casing agnostic. Will use whatever casing the properties use. Added
snakeAttributes
property to model (defaulttrue
) to control casing on relationships when usingtoArray
. - Added
restart identity
to Postgrestruncate
SQL. - Added
Log::listen
callback andilluminate.log
event which can be hooked into for custom logging handling. - Allow blade templates to be configurable (advanced usage). Can swap out
{{ }}
for[[ ]]
as an example, to avoid conflicts with other engines (such as handlebars). camel_case
function now returns strings with lower-case leading letters. Previous behavior of this function can be found in newstudly_case
helper.- Added
find
method to Eloquent Collection. - When using MySQL, new
after
method may be used when building Schema columns to specify column order. ($t->string('name')->after('foo')
) - Added new
--timeout
option toqueue:listen
command. - Fixed bug that sometimes caused custom view engines to not be properly utilized.
- Added
URL::previous
method for getting previous URL fromreferer
$_SERVER variable. - Renamed
path
helper tourl
for consistency. - Added
App::shutdown
method for registering callbacks to be fired at very end of both web and Artisan life-cycle. - Added
saveMany
andcreateMany
to 1:1, 1:*, and : relations. - Support for IronMQ message queue added. Driver is
iron
. - Added
domain
andpath
options to session configuration. Named priorpath
option tofiles
. - Add collation and character set to create table statements in MySQL schema builder.
- Allow session payload cookie name to be configurable.
shouldReceive
may now be called on a Facade multiple times without usinggetMock
.- Allow default value to be passed to Eloquent collection
find
method. - Intelligently parse resource routes containing slashes.
Route::options
is now available for routing HTTPOPTIONS
verb.- New
secret
method may be called from Artisan commands for password style input. - Added
Cache::add
method to store a value in the cache if the key does not exist in the cache already. - Added
Cache::increment
andCache::decrement
methods to all but file and database cache drivers. - Updated
asset:publish
command to automatically find packages with asset directories. - Implement Eloquent scopes.
- Added
assertResponseOk
,assertViewHas
,assertSessionHas
,assertRedirectedTo
,assertRedirectedToRoute
,assertRedirectedToAction
test assertions. - Added new
setAttributeNames
toValidator
to allow dynamically passing custom attribute names per instance. - Properties passed to Eloquent
fill
or__construct
beginning with an underscore will be ignored. - Changed cache stores to be implementors of a
StoreInterface
rather than extenders of aStore
abstract class. Injected implementations into aCache\Repository
class. - Added
array_fetch
andarray_flatten
. Addedfetch
andflatten
toCollection
class. - Added
merge
method to the Collection class. - Added an
addSelect
method to the query builder. - Added
Route::currentRouteName
andRoute::currentRouteAction
. - Protect against mass assignment by default.
- Make
add
andmerge
methods on theMessageBag
chainable. - Added
deleting
anddeleted
methods to Eloquent models. Both new events. - Added
pop
andshift
methods to Eloquent collection. - Allow
Input::get
to be used on JSON requests to give unified API across request types. - Allow
sync
to also update the other pivot table attributes. - Pass console
Command
instance to database seeders. - Made
storage
path configurable. - Added
@lang
and@choice
Blade directives. - Do not run route level after filters if response is returned from before filter.
- Added support for "mail" in addition to "smtp" in
Mail
. - Added
link_to
,link_to_asset
,link_to_route
,link_to_action
helpers. - Routes with too many leading or trailing slashes will now 404.
- Added
callSecure
test helper. - Added
values
method to theCollection
class. - Fix transaction handling for Microsoft SQL Server.
- Added new
dump-autoload
Artisan command that runs optimized for app and all workbenches. - Refactored post
migrate:make
hooks to dump autoloads for workbenches. - Added
DB::listen(Closure)
method which may be used to listen for database queries. - Added
Model::findOrFail(id)
andfirstOrFail
methods to Eloquent. ThrowsModelNotFoundException
. Can listen in your apps and return 404 repsonses if you want. - Added support for
touches
on Eloquent models. For example, addingprotected $touches = ['post']
to a Comment model will update the owning post'supdated_at
column when the Comment is updated. - Session driver now automatically set to
array
when running Artisan tasks. - Added static
unguard
method to Eloquent to disable all mass assignment protection. - Added
--seed
option tomigrate
command.
- Fixed a few things in the ArrayStore session driver.
- Improve reasons in Password Broker.
- Migrated to ircmaxell's password-compat library for PHP 5.5 forward compatibility on hashes. No backward compatibility breaks.
- Inflector migrated to L4. Eloquent models now assume their table names if one is not specified. New helpers
str_plural
andstr_singular
. - Improved
Route::controller
so thatURL::action
may be used with RESTful controllers. - Added model binding to routing engine via
Route::model
andRoute::bind
. - Added
missingMethod
to base Controller, can be used to handle catch-all routes into the controller. - Fixed bug with Redis data retrieval that caused server to hang.
- Implemented
ArrayableInterface
andJsonableInterface
onMessageBag
. - Fixed bug where
hasFile
returnedtrue
whenfile
returnednull
. - Changed default PDO case constant to
CASE_NATURAL
. DB::table('foo')->truncate()
now available on all supported databases.- Fixed Twitter Bootstrap compatibility in Paginator.
- Allow multiple views to be passed to
View::composer
. - Added
Request::segment
method. - No need to prefix Translator methods with colons anymore.
- Allow inline error messages for an entire rule on the Validator.
- Can now automatically auto-load a relation for every query by setting the
with
attribute on models. - Fix fallback locale handling in Translator.
- Added constructor arguments and
merge
method toMessageBag
. - IoC container will now resolve default parameters if no binding is available.
- Fix auto environment detection on Artisan.
- Fix BrowserKit request processing.
- Added
Config::hasGroup
method. - Added
DB::unprepared
method for running raw, unprepared queries against PDO. - Allow
:key
place-holder in MessageBag messages. - Added
Auth::validate
method for validating credentials without logging in. - Added
Auth::stateless
method for logging in for a single request without sessions or cookies. - Added
DB::extend
method for adding custom connection resolvers. - Added
each
andfilter
methods to Eloquent collections. - Swapped method order on
Route::controller
to make it more consistent with other similar methods. - Added route names to resource routes.
- Added support for nested resources.
- Changed resource route parameter names to match resource name, allowing for use with
Route::model
. - Added
extendImplicit
method toValidator
. - Added
Password::remind
andPassword::reset
methods. - Implemented
RemindableInterface
on the defaultUser
model. - Added unified queue API component, with drivers for
sync
andbeanstalkd
(Amazon SQS to come). - Ported
Model->touch
method from L3 Eloquent. - Added
isEmpty
method to thePaginator
. - Added ability to specify
prefix
on a route group. - Added
setBaseUrl
method to pagination environment. - Eloquent Model and Collections objects now include JSON_NUMERIC_CHECK by default on
toJson
method. - Eloquent mutators are now prefixed with
getFooAttribute
andsetFooAttribute
instead ofgetFoo
andsetFoo
. This is to avoid conflicts with other get and set methods on the model, and in your own code. - Added
auth:reminders
Artisan command for generating a migration for the password reminders table. - Added
App::fatal
method for registering an error listener for PHP fatal errors. - Added
session:table
Artisan command for generating a migration for the session database table. - Fix bug when using
first
method on abelongsToMany
relationship. - Added SQL and bindings array to database query exceptions.
- Allow manipulation of session using "dot" notation.
- Route regular expression constraints may now be defined globally via
Route::pattern
. - Auto-increment fields are now unsigned if the database system supports it.
- Changed how database seeding works to give more freedom and allow use of Eloquent, etc.
- Change event dispatcher to use more L3 style conventions instead of passing event objects. Added
until
method. - Fix bug with Eloquent eager loads with joins.
- Allow method specification on class based View composers.
- Allow method specification on class based Route filters.
- Added new configuration option for specifying session cookie name.
- Escape Blade echos by default. Made
{{{ foo }}}
echo for raw output with no escaping. - Allow the sending of e-mails with only plain text parts.