The advantages is mostly nice looking code.
For example
public function show($id)
{
$book = Book::findOrFail($id);
return view('books.show')->with('book', $book);
}
and
public function store(Request $request)
{
$this->validateGenre($request);
$genre = new Genre();
$genre->genre = $request->genre;
$genre->save();
}
To do the same thing in sql with the db facade would look something like
public function show($id)
{
$book = Db:select('SELECT * FROM books WHERE id = ?', [$id]);
return view('books.show')->with('book', $book);
}
public function store(Request $request)
{
$this->validateGenre($request);
DB::insert('INSERT INTO genre (id, genre) values (?, ?)', [null, $request->genre]);
}