Looking at the code the way it is, there's nothing wrong, but looks like your code will grow and something like this might be considered a bad practice:
protected $upload;
protected $encode;
public function __construct(Upload $upload, Encode $encode)
{
$this->upload = $upload;
$this->encode = $encode;
}
public function upload()
{
$file = ffmpegencode($this->upload->getFile());
$this->encode->file = $file;
$this->encode->uploaded_at = new \Carbon\Carbon;
$this->encode->save();
}
Controller knowing too much about your models it's not a desired coupling. Instead you should so something like:
public function upload()
{
if( ! $this->encode->encodeUploadedFile($this->upload->getFile()))
{
return Redirect::to('error');
}
return Redirect::to('success');
}