The purpose of Carbon is to give you an easy way to manipulate php date objects. What I personaly ran into was the same issue you're facing right now.
When you make a query on an date or datetime column on your database you have to make sure that the attribute to compare to (in your case the input given by the user) follows the same format as the one on your database. Like won't change a thing here.
That's why Carbon is really useful.
As an addition to my previous answer you can tell Laravel to format the date in a certain format. For example :
{!! Form::input('date', 'published_at', $model->published_at->format('Y-m-d)' !!}
you can use the format() method because Laravel knows its a carbon instance
Then you can also tell Laravel that each time you're manipulating the published_at attribute you want him to convert this value to a Carbon instance :
public function getPublishedAtAttribute($date) {
return new Carbon($date);
}
This way each time an user is going to send you a form, the published_at attribute is going to be converted to a Carbon instance, but also when you're trying to make a simple query like yours :
orWhere('published_at', 'LIKE', "%query")
If you're unsure of this method i'd invite you to dd() the value sent selected by your user and the one you're actually trying to compare to and see it's not the same and as such it's a normal behaviour to return no results.
Comparing dates or datetimes columns can be a mess, and Carbon makes your life easier.