簡體   English   中英

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

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

我正在嘗試按照互聯網上的一些指南構建我的第一個 Laravel 應用程序,但我覺得我錯過了一些明顯的東西。 這是代碼。

錯誤

Builder.php 第 2450 行中的 BadMethodCallException:調用未定義的方法 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');
    }
}

客戶地址控制器

<?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 to User extends \\Cartalyst\\Sentinel\\Users\\EloquentUser以將哨兵的用戶擴展到您的應用程序的用戶模型
  • 最后,您的控制器代碼現在應該是

`$address = new CustomerAddress(); $address->address = $request->input('address');

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

一切都應該是桃色的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM