Laravel是一个基于PHP的开源框架,用于构建Web应用程序。在Laravel中,我们可以使用Eloquent ORM来创建和管理数据库表。以下是一个简单的图书管理系统的示例:
1. 首先,创建一个名为`Book`的模型,用于表示图书信息:
```php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Book extends Model
{
protected $fillable = ['title', 'author', 'publisher', 'price'];
}
```
2. 接下来,创建一个名为`Library`的模型,用于表示图书馆信息:
```php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Library extends Model
{
protected $fillable = ['name', 'address'];
}
```
3. 创建一个名为`User`的模型,用于表示用户信息:
```php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
}
```
4. 创建一个名为`Booking`的模型,用于表示预订信息:
```php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Booking extends Model
{
protected $fillable = ['user_id', 'book_id', 'date'];
}
```
5. 创建一个名为`LibraryBooking`的模型,用于表示图书馆预订信息:
```php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class LibraryBooking extends Model
{
protected $fillable = ['user_id', 'book_id', 'date'];
}
```
6. 创建一个名为`BookingController`的控制器,用于处理预订和取消预订操作:
```php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppModelsBooking;
use AppModelsBook;
use AppModelsLibrary;
use AppModelsUser;
class BookingController extends Controller
{
public function index()
{
$books = Book::all();
return view('bookings.index', compact('books'));
}
public function create()
{
$books = Book::all();
return view('bookings.create', compact('books'));
}
public function store(Request $request)
{
$book = Book::find($request->book_id);
$user = User::find($request->user_id);
$booking = new Booking;
$booking->user_id = $user->id;
$booking->book_id = $book->id;
$booking->date = $request->date;
$booking->save();
return redirect()->route('bookings.show', ['book' => $book, 'user' => $user]);
}
public function show($book_id, $user_id)
{
$book = Book::find($book_id);
$user = User::find($user_id);
$booking = Booking::where('user_id', $user->id)->where('book_id', $book->id)->first();
if ($booking) {
return view('bookings.show', compact('book', 'user', 'booking'));
} else {
abort(404);
}
}
public function destroy($book_id, $user_id)
{
$book = Book::find($book_id);
$user = User::find($user_id);
$booking = Booking::where('user_id', $user->id)->where('book_id', $book->id)->first();
if ($booking) {
$booking->delete();
return redirect()->route('bookings.index');
} else {
abort(404);
}
}
}
```
7. 创建一个名为`BookingsController`的控制器,用于处理所有与图书预订相关的操作:
```php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppModelsBooking;
use AppModelsBook;
use AppModelsLibrary;
use AppModelsUser;
use AppModelsLibraryBooking;
class BookingsController extends Controller
{
public function index()
{
$books = Book::all();
return view('bookings.index', compact('books'));
}
public function create()
{
$books = Book::all();
return view('bookings.create', compact('books'));
}
public function store(Request $request)
{
$book = Book::find($request->book_id);
$user = User::find($request->user_id);
$booking = new Booking;
$booking->user_id = $user->id;
$booking->book_id = $book->id;
$booking->date = $request->date;
$booking->save();
return redirect()->route('bookings.show', ['book' => $book, 'user' => $user]);
}
public function show($book_id, $user_id)
{
$book = Book::find($book_id);
$user = User::find($user_id);
$booking = Booking::where('user_id', $user->id)->where('book_id', $book->id)->first();
if ($booking) {
return view('bookings.show', compact('book', 'user', 'booking'));
} else {
abort(404);
}
}
public function destroy($book_id, $user_id)
{
$book = Book::find($book_id);
$user = User::find($user_id);
$booking = Booking::where('user_id', $user->id)->where('book_id', $book->id)->first();
if ($booking) {
$booking->delete();
return redirect()->route('bookings.index');
} else {
abort(404);
}
}
}
```
8. 最后,创建一个名为`BookingsRoute`的路由,将视图文件映射到相应的控制器方法上:
```php
use IlluminateSupportFacadesRoute;
use AppHttpControllersBookingsController;
use AppHttpControllersLibraryBookingController;
use AppHttpControllersBookingController;
use AppHttpControllersLibraryController;
use AppHttpControllersUserController;
use AppHttpControllersBookController;
use AppHttpControllersLibraryController;
use AppHttpControllersUserController;
use AppHttpControllersBookController;
use AppHttpControllersLibraryController;
use AppHttpControllersUserController;