У меня есть обычный ресурс UserController
UserController extends Controller {
public function index() { /**... some code */ }
public function store(Request $request) { /**... some code */ }
public function show(User $user) { /**... some code */ }
public function update(Request $request, User $user) { /**... some code */ }
public function destroy(User $user) { /**... some code */ }
}
User extends Model {
protected $fillable = [ 'name', 'email'];
}
И у меня есть дочерний ресурс ContactController
ContactController extends Controller {
public function index(User $user) { /**... some code */ }
public function store(Request $request, User $user) { /**... some code */ }
public function show(User $user, Contact $contact) { /**... some code */ }
public function update(Request $request, User $user, Contact $contact) { /**... some code */ }
public function destroy(User $user, Contact $contact) { /**... some code */ }
}
Contact extends Model {
protected $fillable = [ 'phones', 'user_id' ];
}
В моем route.php
Route::apiResource('users', 'UserController');
Route::apiResource('users.contacts', 'ContactController');
В моем случаеДумать API, я могу создать только один контакт для пользователя.Сделайте запрос на
POST api / users / 12 / contacts После этого я смогу получить этот контакт GET api / users / 12 /contacts / 11 И клиент может создать как можно больше контактов, используя POST api / users / 12 / contacts Но мой пользователь может иметь только один контакт.
На самом деле я могу решить эту проблему, добавив проверку, но я думаю, что этот трюк не решает проблему правильно