【发布时间】:2020-10-16 05:34:45
【问题描述】:
我在 Laravel 8 上使用 Livewire,目前有 3 个模型,Category、SubCategory 和 MenuItem 用于 3 个表。以上所有型号都有单独的 livewire 控制器,并分别具有 CRUD 操作的代码。我有单独的视图和路线来编辑上面的表格,它们之间都有很好的关系。现在我需要在这里做的是,我需要在一个视图中显示所有三个表以执行 CRUD 操作。
我试图通过使用子视图功能来实现这一点,传递视图并使变量可用于特定视图,但它没有成功,我认为这不是这样做的方法,只是想找到一种解决方法。我在下面提到我的模型以供参考。请帮我解决一下这个。非常感谢您的宝贵时间!
应用\模型\类别
class Category extends Model
{
use HasFactory;
protected $table = "categories";
protected $fillable = ['sub_category_name'];
public function SubCategories() {
return $this->hasMany(SubCategory::class, 'category_id');
}
public function MenuItems() {
return $this->hasManyThrough(
'MenuItem::class',
'SubCategory::class',
'sub_category_id',
'category_id'
);
}
}
应用\模型\子类别
class SubCategory extends Model
{
use HasFactory;
protected $table = "sub_categories";
protected $fillable = ['category_id', 'sub_category_name'];
public function Categories() {
return $this->belongsTo(Category::class, 'category_id');
}
public function MenuItems() {
return $this->hasMany(MenuItem::class, 'sub_category_id');
}
}
应用\模型\菜单项
class MenuItem extends Model
{
use HasFactory;
protected $table = "menu_items";
protected $fillable = ['sub_category_id', 'item_name', 'item_description'];
public function SubCategories() {
return $this->belongsTo(SubCategory::class, 'sub_category_id');
}
}
这就是我试图达到上述结果的原因。因为我需要将带有子类别表的视图包含到菜单项表视图中。我使变量可用于该特定视图。
资源\视图\Livewire\菜单项
<div>
@include('livewire.sub-category')
</div>
App\Providers\AppServiceProvider
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use App\Models\SubCategory;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
View::composer('livewire.menu-item', function ($view) {
$view::with('sub_category_name', SubCategory::orderBy('sub_category_name')->get());
});
}
}
【问题讨论】:
-
那么你到目前为止尝试了什么。?有什么错误吗?
-
@KamleshPaul 没有伙伴,没有错误,只是无法做到这一点,因为我试图输出另外两个表(通过子视图以及通过使用相关变量创建另外两个表)在单个视图中,并尝试使用视图编辑器使变量可用于特定视图,但无法获取控制器本身中定义的变量,因此没有输出。
-
也添加这些代码
-
@KamleshPaul 它不可能通过我使用的方法,所以它没有用,我猜。我使用子视图使视图可以从一个视图到另一个视图。
-
您应该添加您的代码,以便我们更好地理解,如果您正在寻求任何建议,这里不适合询问