0

我有一个与 Profile 对象具有一对多关系的 User 对象。我需要配置文件对象的字段才能在网页上动态显示它的变量。即有多少“帖子”,他们的“描述”等。几天前我遇到了一些关于此检索的问题。自然地认为这是一个前端错误,我尝试添加'@'标签-但是,这似乎只是抑制了被标记的错误,并没有解决问题。因此,我决定检查是否在使用编辑个人资料页面并填写字段并“保存”时,是否在后端更新了字段:这不起作用,并且修补程序标记了附加的错误。

html中用户对象属性的动态调用:

<input  id="title"
type="text"
class="form-control
@error('title') is-invalid
@enderror"
name="title"
value="{{ old('title') ?? @$user->profile->title}}" required
autocomplete="title" autofocus>

ProfilesController 中的更新函数 (注意“profile”属性带有黄色下划线)

public function update(User $user)
    {$data = request()->validate([

            'title' => 'required',
            'description' => 'required',
            'url' => 'url',
            /*'image' => '', */


        ]);

       $user->profile->update($data);
       return redirect("/profile/{$user->id}");

    }

请注意:由此标记的错误是 'Call to a member function update() on null'

User 类中的 Profile 方法:

 public function profile()
        {return $this->hasOne(Profile::class);}

Profile类中的用户方法:

 public function user()
    {return $this->belongsTo(User::class);}

最后是使用 Tinkers all() 时标记的错误;

>>> Profile::all();
[!] Aliasing 'Profile' to 'App\Profile' for this Tinker session.
=> Illuminate\Database\Eloquent\Collection {#3080
     all: [],
   }
>>>    

删除了“@”标签错误:

Facade\Ignition\Exceptions\ViewException
Trying to get property 'title' of non-object (View: C:\Users\(PCNAMEfoo)\(PROJECTNAMEfoo)\resources\views\profiles\index.blade.php)

编辑 1:我认为如果我删除“@”标签并导航到索引页面(在“ html 中用户对象属性的动态调用”下),显示会发生什么也会很有帮助。

编辑 2:添加了更多信息。

这是我的第一篇文章,所以我希望它的格式正确。感谢任何级别的输入。

4

0 回答 0