【问题标题】:Laravel 7.7 Display user Post/Products in public profile in single pageLaravel 7.7 在单页的公共个人资料中显示用户帖子/产品
【发布时间】:2020-08-28 22:40:58
【问题描述】:

我有 laravel 7.7 应用程序,其中包含多个用户并且所有用户都有产品。现在我想在 www.domain.com/company/user-name 上显示访客的用户配置文件。用户创建的所有产品都应与用户个人资料显示在同一页面上。

所有产品都使用 user_id 保存。

我的产品模型有:

// User relation
public function user(){
    return $this->belongsTo('Add\User', 'user_id');
}

我的用户模型有:

public function product(){
    return $this->hasMany('App\Product');
}

CompanyController 有:

public function show($slug)
{
    // Show individual company
    $user = User::where('slug', $slug)->first();
    return view('company.show')->with('user', $user);
}

迁移:

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('image');
        $table->string('title');
        $table->string('text');
        $table->string('price');
        $table->integer('user_id');
        $table->timestamps();
    });
}

我需要帮助了解如何从 CompanyController 的产品表中的 user_id 获取/显示用户的所有产品。不使用身份验证。

【问题讨论】:

  • 不应该Add\UserApp\User 吗?
  • 是的。只是打字错误:)

标签: php mysql laravel


【解决方案1】:

这样试试

模型用户

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

模型产品

public function product(){
    return $this->hasMany(Product::class, 'user_id');
}

如果不正确,请将您的迁移。

【讨论】:

    【解决方案2】:

    你可以像这样使用foreach。

    foreach ($user->product as $product) {
    
    }
    

    在控制器中。请注意,它的用法类似于 ->product 而不是 ->product() 并注意在模型中使用 products() 更合适。

    你可以使用内部刀片。既然你提到了表,我猜你需要在刀片 foreach 中迭代 <td> s。

    @foreach ($user->product as $product)
    
    @endforeach
    

    【讨论】:

    • 它不在 中。在控制器中,我添加了 $user->product 不起作用。
    • 错误是“试图获取非对象的属性‘logo’”我在用户表中有标识。
    • 原因可能是表中没有用户。尝试在 forelse 中添加而不是 foreach。 stackoverflow.com/questions/32652818/…
    • 现在得到这个:属性 [logo] 在这个集合实例上不存在。
    • 试试这个答案。认为这是你的问题stackoverflow.com/questions/41366092/…
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签