gpt4 book ai didi

laravel 5.5 CRUD 与数据透视表

转载 作者:行者123 更新时间:2023-12-02 19:03:37 25 4
gpt4 key购买 nike

我正在尝试在 Laravel 5.5 中使用 2 个表和一个数据透视表来创建 CRUD。

我通过这种方式创建了模型、 Controller 和迁移:

第一步:管理应用程序中使用的语言

php artisan make:controller LangController --resource -model=Lang
php artisan make:migration create_Langs_table

第二步:管理文章中创建的文章

php artisan make:controller ArticleController --resource -model=Article
php artisan make:migration create_articles_table

第三步:创建数据透视表

php artisan make:migration create_article_lang_table

第四步:我创建了路线

Route::resource('/articles', 'ArticleController');

第五步:我在模型中创建了关系:

在文章模型中:

public function langs(){
return $this->belongsToMany('App\Lang')->withPivot('name','shortname','description')->withTimestamps();
}

在 Lang 模型中:

public function articles(){
return $this->belongsToMany('App\Article')->withPivot('name','shortname','description')->withTimestamps();
}

我还修改了数据透视表,因为它包含特定字段

class CreateLangSectorTable extends Migration
{
public function up()
{
Schema::create('article_lang', function (Blueprint $table) {
$table->integer('lang_id');
$table->integer('article_id')->index('FK_ARTICLE');
$table->string('name', 80)->nullable();
$table->string('shortname', 40)->nullable();
$table->text('description', 65535)->nullable();
$table->primary(['lang_id','sector_id']);
});
}

public function down()
{
Schema::dropIfExists('langs_sectors');
}
}

当我想在 ArticleController 中创建 CRUD 时,我陷入了困境。我尝试在 ArticleController 中进行修改,但没有成功。所以我删除了所有内容。

class ArticleController extends Controller
{
// Display a listing of the resource.
public function index() {
}

// Show the form for creating a new resource.
public function create() {
}
// Store a newly created resource in storage.
public function store(Request $request) {
}

// Display the specified resource.
public function show($id) {
}

// Show the form for editing the specified resource.
public function edit($id) {
}

// Update
public function update(Request $request, $id) {
}

// Remove the specified resource from storage.
public function destroy($id) {
}
}

我想要在“索引”中:

  • 显示包含以下内容的表格:名称、短名称、说明
  • 按语言过滤或显示特定语言的文章

在“创建”

  • 我想用语言创建一篇文章
  • 我想创建一篇文章,该文章是另一篇文章的翻译

我真的很喜欢使用 Laravel,但我还需要更多练习:)感谢您的帮助

最佳答案

I want in the "index" to show a table with: name, shortname, description and to filter by lang or display article in a specific language

加载数据并将其传递给 View :

$lang = Lang::find($id);
$articles = $lang->articles()->get();
return view('articles.index', ['articles' => $articles]);

显示数据:

@foreach ($articles as $article)
{{ $article->pivot->name }}
{{ $article->pivot->shortname }}
@endforeach

In the "create" I want to create an article in a lang and I want to create an article which is a translation of another article

确保您已添加 $fillable数组到 Article 模型。创建文章:

$lang = Lang::find($id);
$article = $lang->articles()->create(['columnInArticlesTable' => $request->something]);

然后使用 attach() 创建翻译方法:

$lang->articles()->attach($article->id, ['name' => $request->name, 'shortname' => $request->shortname]);

关于laravel 5.5 CRUD 与数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48175829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com