- 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::onceBasic
method for easier API integration with basic auth. - Added named view implementation which was in Laravel 3.
- Migrated entire session back-end to Symfony HttpFoundation Session. New
native
driver. All 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. - Removed
dropColumns
function. - Added chainable
header
method to Http Response. - Implementing baked-in support for Iron.io "push queues" via
Queue::marshal
. No daemon processes needed! - Added
queue:subscribe
command for registering a URL end-point with an Iron.io push queue. - Added support for pushing anonymous functions onto the Queue. Wait for me to screencast this! Proceed with caution - black magic involved.
- Allow for an array of expressions to be passed to
where
on route, keyed by parameter. - Allow the passing of an array to the
appends
method of the Paginator. - Added
Html::mailto
andHtml::email
from Laravel 3. - Added
Mail::queue
,Mail::later
,Mail::queueOn
, andMail::laterOn
. Screencast forthcoming. - Added
URL::full
method as alias intoRequest::fullUrl
. - Set default encryption mode to
cbc
.Crypt::setMode
is available if you wish to use previous mode ofctr
. - Added
Redirect::guest
andRedirect::intended
to simplify sending users to intended location. - Fixed cookie lifetimes not being updated on each page load.
- Added
has
method for checking the quantity of related models from a parent query. - Added
sort
andsortBy
methods to supportCollection
class. - Reimplemented
keep
andreflash
for preserving flash data across more than one request. - Fixed bug where flash data was not carried through multiple requests.
- Added ability to pass
Closure
as third parameter toRoute::model
to determine not found behavior. - Allow for
Class@method
syntax to be used withValidator::extend
. - Added
@overwrite
Blade directive for forcing a full section overwrite. - Added
visible
property to Eloquent that is white-list version ofhidden
. - Using
pluck
on Eloquent queries will now call accessors. - Tweaked behavior of Redis sections to remove "forever" keys from storage.
- Allow package views to be overriden by the application in
view/packages/vendor/package
, etc. - Added
required_if
validation rule. - Added
DB::reconnect
method toDatabaseManager
. - Fix bug causing
increment
calls on model instances to update the whole table. - Added
modelKeys
function to the Eloquent collection class. - Added
associate
method to theBelongsTo
relationship. - Added ability to register connections in the IoC container.
- Added
Schema::hasColumn
method. - Arrays returned from routes / controllers are now turned into JSON.
- Collection
map
andfilter
both return newCollection
instances now. - Added support for wildcard event listeners. For example,
Event::listen('view.*', function() {})
. - Fix bug in translator replacements for strings that have the same beginning.
- Added ability to pull values out of relationships, etc. on FormBuilder object value pulls.
- Added ability to pass a name array as third parameter to
Route::controller
. - Added
replicate
method to Eloquent model. - Added
slice
method toCollection
. - Fixed generation of namespaced resource controllers.
- Send
user
to the password reminder e-mail view. - Added support for
union
statements in query builder. - Added ability to add more conditions on
exists
validation rule. - Added support for maintenance mode via
php artisan down
andphp artisan up
. - Added "soft delete" support to Eloquent via new "softDelete" property.
restore
method added to "un-delete". - Added
trashed
method to Eloquent model andtrashed
to Eloquent builder. - Renamed
merge
method tocollapse
and added newmerge
method inCollection
. - Added
auth.attempt
event andattempting
method. - Allow passing an array to View::share.
- Added
has
method to cache sections. - Allow "dot" notation access into session arrays.
- Added
smallInteger
to query builder. - Added
dd
andarray_pull
helpers. - Fix bug that caused pluralizer to not respect casing.
- Fix attribute handling bug in validation messages like
required_if
, etc. - Include CSRF tokens by default in every non-GET form.
updated_at
model timestamps are now automatically handled for ad-hoc queries.- Allow pattern filters to be specified with an HTTP verb constraint.
- Added
bigInteger
andmediumInteger
on schema builder. - Fix bug causing Eloquent to override user specified timestamps on
save
. - Added
observe
method to Eloquent models to allow for registering observer classes. - Added
forget
method to event dispatcher to allow all listeners for an event to be removed. created_at
,updated_at
anddeleted_at
are now Carbonized by default.- Added
getJobId
for all queue drivers.
- 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. - Fix bug with replacements not being made on
Lang::choice
.
- 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.