У меня есть это не просто код на мой контроллер:Как сделать компактный код Laravel 5 Красноречивые Отношения
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\UserDetail;
use App\UserSex;
use App\Province;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class UserController extends Controller {
...
public function show($id) {
//
$User = User::find($id);
$UserDetail = User::find($id)->UserDetail;
$UserSex = User::find($id)->UserSex;
$Province = User::find($id)->Province;
return view('users.show', compact('UserDetail', 'User', 'UserSex', 'Province'));
}
...
Этот код на одном из моих модели:
namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class User extends Model implements AuthenticatableContract, CanResetPasswordContract {
...
protected $hidden = ['password', 'remember_token'];
public $timestamps = false;
public function UserDetail() {
return $this->hasOne('App\UserDetail', 'userDetail_id');
}
public function UserSex() {
return $this->hasOne('App\UserSex', 'sex_id');
}
public function Province() {
return $this->hasOne('App\Province', 'province_id');
}
...
И это код на вид:
<div class="form-group">
<label for="isbn" class="col-sm-2 control-label">User Name</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="isbn" placeholder="{!! $User->username !!}" readonly>
</div>
</div>
<div class="form-group">
<label for="title" class="col-sm-2 control-label">Full Name</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="firstName" placeholder="{!! $UserDetail->firstName !!} {!! $UserDetail->lastName !!}" readonly>
</div>
</div>
<div class="form-group">
<label for="publisher" class="col-sm-2 control-label">Sex</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="sex" placeholder="{!! $UserSex->gender !!}" readonly>
</div>
</div>
Как вы видите в моем контроллере, я вызываю каждую функцию в модели (return view ('users.show', compact ('UserDetail', 'User', 'UserSex', 'Province'));), чтобы показать данные между таблицей в Отношения с потребителем.
У меня нет ошибок, чтобы сделать код вроде этого, и это хорошо работает.
Мой вопрос: я делаю это правильно (база на Laravel 5)?
Потому что я думаю, что этот метод не просто, не компактна если я много таблицы позже. Я до сих пор не изучил все функции laravel. Может быть, некоторые из вас могут помочь мне исправить это.
Я думаю, что я сделал ошибку на мой контроллер ** Показать ** Функция о параметре ($ ID). Теперь это еще больше смущает меня. – wahyueka31
В чем причина того, что вы добавили UserSex и провинцию в отдельные модели? – yangqi
@yangqi Нет причин для их разделения, я просто следую официальной документации Laravel 5.1 здесь: http://laravel.com/docs/5.1/eloquent-relationships. Я ошибаюсь? – wahyueka31