Laravel 5.3 + Sentinel:第 2450 行 Builder.php 中的 BadMethodCallException

Laravel 5.3 + Sentinel: BadMethodCallException in Builder.php line 2450

我正在尝试按照 Internet 上的一些指南构建我的第一个 Laravel 应用程序,但我觉得我遗漏了一些明显的东西。这是代码。

错误

BadMethodCallException in Builder.php line 2450: Call to undefined method Illuminate\Database\Query\Builder::addresses()

用户模型

<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Sentinel;

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'email', 'password',
    ];

    protected $hidden = [
        'password', 
        'remember_token'
    ];

    public function addresses()
    {
        return $this->hasMany('App\CustomerAddress');
    }
}

客户地址模型

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class CustomerAddress extends Model
{
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

CustomerAddress-controller

<?php
namespace App\Http\Controllers;
use App\CustomerAddress;
use Illuminate\Http\Request;

class CustomerAddressController extends Controller
{
    public function create(Request $request)
    {
        $address = new CustomerAddress();
        $address->address = $request['address'];
        $request->user()->addresses()->save($address);
    }
}

这段代码后出现错误:

$request->user()->addresses()->save($address);

有什么想法吗?谢谢和欢呼

  • 在 .config/cartalyst.sentinel.php 中,将 'model' => 'Cartalyst\Sentinel\Users\EloquentUser' 更改为 'model' => 'App\User' 以使用定义了 addresses 关系的用户模型
  • 在 ./app/User 中将 User extends Authenticatable 更改为 User extends \Cartalyst\Sentinel\Users\EloquentUser 以将 sentinel 的用户扩展到您应用的用户模型
  • 最后,您的控制器代码现在应该是

`$address = new CustomerAddress(); $地址->地址 = $请求->输入('address');

$request->user()->addresses()->save($address);`

一切都应该是桃色的