У меня проблемы с попыткой вернуть представление с адресом пользователя.Я не знаю, настоящая проблема в моем контроллере или в моих моделях.Я хотел бы знать, как правильно вернуть пользователя с его адресом, создавая связь с моделями.
Модель адреса
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Address extends Model {
protected $fillable = ['name','last_name','street_address','street_address2', 'country', 'city', 'state-province', 'phone-number', 'phone-number2', 'address-type'];
public function user() {
return $this->hasOne('App\User');
}
}
ПользовательМодель
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'first_name', 'last_name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function address() {
return $this->belongsTo('App\Address');
}
}
В UserController я использую метод getAddress, но я действительно не знаю, как получить адрес пользователя и как создать пользователя с этим отношением.
UserController
namespace App\Http\Controllers;
use App\User;
use App\Address;
use Illuminate\Http\Request;
use App\Http\Requests;
use Auth;
class UserController extends Controller
{
public function userProfile() {
$user = Auth::user();
return view('user.profile', ['user' => $user]);
}
public function userAccount(User $user) {
$user = Auth::user();
return view('user.account', compact('user'));
}
public function nameUpdate(User $user)
{
$this->validate(request(), [
'first_name' => 'required|string|max:255',
'last_name' => 'required|string|max:255'
]);
$user->first_name = request('first_name');
$user->last_name = request('last_name');
$user->save();
return redirect()->back();
}
public function emailUpdate(User $user)
{
$this->validate(request(), [
'email' => 'required|string|email|max:255|unique:users',
]);
$user->email = request('email');
$user->save();
return redirect()->back();
}
public function passwordUpdate(User $user) {
$this->validate(request(), [
'password' => 'required|min:8|confirmed',
]);
$user->password = bcrypt(request('password'));
$user->save();
return redirect()->back();
}
public function getAddress() {
$user=Auth::user();
$adress = $user->adress;
}
}