【发布时间】:2016-03-04 15:12:02
【问题描述】:
我的关系有些问题,返回以下错误:
Call to undefined method Illuminate\Database\Query\Builder::ftpAccounts()
这是我的模型:
客户模型
class Customer extends Model
{
protected $table = 'customers';
protected $fillable = [
'name',
'email',
'phone',
'status',
];
public function user()
{
return $this->belongsTo(User::class);
}
public function ftpAccounts()
{
return $this->hasMany(FTPAccounts::class);
}
}
FTP 帐户模型
class FTPAccounts extends Model
{
protected $table = 'ftp-accounts';
protected $fillable = [
'host',
'user',
'password',
'status',
];
public function customer()
{
return $this->belongsTo(Customer::class);
}
}
我的控制器:
class AdminFTPAccountsController extends AdminBaseController
{
private $repository;
public function __construct(FTPAccountsRepository $repository)
{
parent::__construct();
$this->repository = $repository;
}
public function index()
{
return view('admin.pages.admin.clientes.ftp.index', [
'customers' => $this->repository->allFTPAccounts(),
'title' => 'TESTE'
]);
}
public function getCreate()
{
return view('admin.pages.admin.clientes.ftp.create', [
'title' => 'Nova conta FTP'
]);
}
public function postCreate(CustomerFTPAccountCreateRequest $request)
{
$request->user()->customers()->ftpAccounts()->create([
'host' => $request->host,
'user' => $request->user,
'password' => $request->password,
]);
return redirect('admin/clientes');
}
}
会是什么?我是不是做错了什么?
## 编辑 01 ##
用户模型:
class User extends Model implements AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword;
protected $table = 'users';
protected $fillable = ['name', 'email', 'phone', 'password', 'status'];
protected $hidden = ['password', 'remember_token'];
// protected $casts = ['status' => 'boolean'];
public function articles()
{
return $this->hasMany(Article::class);
}
public function customers()
{
return $this->hasMany(Customer::class);
}
}
【问题讨论】:
-
您的
User模型没有任何名为ftpAccounts()的方法。 -
@JilsonThomas 我想将 FTP 帐户与客户而非用户相关联,我不知道该怎么做
标签: php laravel laravel-5.1