Laravel 5.3+;Sentinel:Builder.php第2450行中的BadMethodCallException
我正试图通过遵循互联网上的一些指南来构建我的第一个Laravel应用程序,我觉得我遗漏了一些明显的东西。这是代码 错误Laravel 5.3+;Sentinel:Builder.php第2450行中的BadMethodCallException,php,laravel,laravel-5,laravel-5.3,sentinel,Php,Laravel,Laravel 5,Laravel 5.3,Sentinel,我正试图通过遵循互联网上的一些指南来构建我的第一个Laravel应用程序,我觉得我遗漏了一些明显的东西。这是代码 错误 <?php namespace App\Http\Controllers; use App\CustomerAddress; use Illuminate\Http\Request; class CustomerAddressController extends Controller { public function create(Request $reque
<?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);
}
}
Builder.php第2450行中的BadMethodCallException:调用未定义
方法\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');
}
}
有什么想法吗?谢谢和干杯- 在.config/cartalyst.sentinel.php中,将
更改为'model'=>'cartalyst\sentinel\Users\EloquentUser'
以使用定义了'model'=>'App\User'
地址关系的用户模型
- 在./app/User change
到User extends authenticable
中,将Sentinel的用户扩展到应用程序的用户模型User extends\Cartalyst\Sentinel\Users\EloquentUser
- 最后,您的控制器代码现在应该是
所有的东西都应该是桃色的在请求之前你需要$address->save()->user()->address()->save($address);还可以使用$request->input('address')。客户地址表上还应该有一个user\u id字段。嘿,感谢您的快速回复。添加$address->save()会显示另一条错误消息,客户地址表中有一列“字段'user\u id'没有默认值(SQL:insert-into
customer\u addresses
(address
,updated\u at
,created\u at
)值(asdasd,2016-12-24 02:54:342016-12-24 02:54:34)),即使在CustomerAddress-model.Try$request->user()->addresses()->associate($address)中将“地址”添加到可填充项之后;相反,让我们看看嘿!上面的内容对我很有用,但是我有一个与最后一段代码相关的问题。为什么我需要先将地址保存在表中($address->save()),然后通过$request->user()->addresses()->save($address)将用户id添加到表中?这是否会导致执行两(2)个insert查询?如果没有$address->save(),它对我来说也很好。干杯,谢谢!同时,一次插入所有内容并不需要表中user_id的null属性。我不知道,我可能只是错过了一些重要的东西。你是对的,添加$address->save()是我需要user\u id为空的原因。如果删除$address->save(),它应该可以正常工作,而用户id不可为空。我希望这一切都会好起来!也许我终于明白了。再次感谢你的帮助。干杯
$request->user()->addresses()->save($address);