Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 属于返回舱_Php_Laravel - Fatal编程技术网

Php 属于返回舱

Php 属于返回舱,php,laravel,Php,Laravel,当我在没有默认键的情况下使用belongsTo时,它将无法连接 “我的用户”表中有user\u id,这是表示该用户的随机和唯一字符串。我的URL表有user\u id和uri列,其中user\u id包含users表user\u id 在Url模型中,我有: public function user() { return $this->belongsTo('App\User','user_id','user_id'); } public function uri() {

当我在没有默认键的情况下使用belongsTo时,它将无法连接

“我的用户”表中有
user\u id
,这是表示该用户的随机和唯一字符串。我的URL表有
user\u id
uri
列,其中
user\u id
包含
users
user\u id

在Url模型中,我有:

public function user() {
    return $this->belongsTo('App\User','user_id','user_id');
}
public function uri() {
        return $this->hasOne('App\Url', 'user_id', 'user_id')->first()->uri;
}
在用户模型中,我有:

public function user() {
    return $this->belongsTo('App\User','user_id','user_id');
}
public function uri() {
        return $this->hasOne('App\Url', 'user_id', 'user_id')->first()->uri;
}
通过使用
$user->uri()
我从与
user\u id
连接的
url
表中获取
uri

但当我使用
$url->user()
时,在laravel tinker中返回null或BelongsTo类

有人知道为什么吗?

您的
User::uri()
方法不是关系方法

您正在使用其中的关系方法,但是您正在查询它的第一个结果并返回uri属性

您的
Url::user()
方法是关系方法,因为您实际返回的是关系(BelongsTo)实例。雄辩的关系使用如下:

// To get a related entity on a BelongsTo relationship, you access it as a property:
$url->user

// To query a relationship, you use it as a method:
$url->user()->where(...)->first();

我还有一个问题,我对avatar()方法使用了相同的方法,并且我尝试了你们所说的方法,除非我添加->first()。。。是不是因为我没有给阿凡达模型添加任何东西,我是否也需要添加阿凡达模型来建立关系?什么类型的关系?对于HasOne或BelongsTo,$model->relation应该等同于$model->relation()->first()。因此,如果模型是$user,
$user->avatar
,则在返回关系实例时,您将如何访问虚拟形象。没有必要在HasOne上使用
first()
。我制作了一个新的应用程序,并在那里复制了我需要的所有东西,现在它可以像你说的那样工作了,我不知道为什么,但它可以:D