Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.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 在Laravel中保存数据并同时附加_Php_Html_Mysql_Laravel_Input - Fatal编程技术网

Php 在Laravel中保存数据并同时附加

Php 在Laravel中保存数据并同时附加,php,html,mysql,laravel,input,Php,Html,Mysql,Laravel,Input,我有一个博客应用程序,我需要在帖子上添加标签。我在数据库中有一个输入字段、post模型、tag模型和3个表:posts、tags和tag\u post,具有许多关系 当我尝试在表上添加新标记时,它会发送到tag_post表而不是tag表。我确实试图改变我的模型和控制器,但情况更糟 后期模型 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { protect

我有一个博客应用程序,我需要在帖子上添加标签。我在数据库中有一个输入字段、post模型、tag模型和3个表:
posts
tags
tag\u post
,具有许多关系

当我尝试在表上添加新标记时,它会发送到tag_post表而不是tag表。我确实试图改变我的模型和控制器,但情况更糟

后期模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{

  protected $filliable = ['PostTitle', 'post', 'slug'];

  public function categories()
  {
    return $this->BelongsToMany('App\Categories', 'category_post');
  }

  public function tags()
  {
    return $this->BelongsToMany('App\Tag', 'tag_post');
  }

}
namespace App;

use Illuminate\Database\Eloquent\Model;

class Tag extends Model
{
    protected $filliable = ['tag'];


    public function posts()
    {
      return $this->BelongsToMany('App\Post', 'tags_post');
    }
}
后置控制器

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tag extends Model
{
    protected $filliable = ['tag'];


    public function posts()
    {
      return $this->BelongsToMany('App\Post', 'tags_post');
    }
}
public function store(Request $request)
{

    $post = new Post;
    $post->user_id = auth::id();
    $post->PostTitle = $request->PostTitle;
    $post->post = $request->post;
    $post->slug = $request->slug;
    $post->status = '1';
    $post->save();
    $post->categories()->attach($request->categories);

      $tags = new Tag;
    foreach($tags as $tag){
    $tags->tag = $request->tags;
    if($tags->save()){
      $post->tags()->attach($request->tags);
    }
  }

    return redirect('blog')->with('messageSuccess', '¡Tu entrada se ha creado Exitosamente!');
}
表格

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tag extends Model
{
    protected $filliable = ['tag'];


    public function posts()
    {
      return $this->BelongsToMany('App\Post', 'tags_post');
    }
}
<div class="post-panel-3">
            <div class="form-group">
              <label for="postTags">Etiquetas: </label>

              <input  type="text" name="tags[]" value=" " class="form-control" placeholder="Etiquetas" id="tagBox">

            </div>

Etiquetas:
我编辑了if语句,但在保存标记时出现了此错误
类型错误:传递给Illumb\Database\Grammar::parameterize()的参数1必须是C:\laragon\www\asiviajo app\vendor\laravel\framework\src\Illumb\Database\Query\Grammars\Grammar.php第665行中调用的数组类型(给定字符串)


在将标签附加到帖子之前,请尝试保存标签

而不是:

...
if ($tag) {
    // Do your stuff
}
这样做:

...
if ($tag->save()) {
    // Do your stuff
}
这样,标记将保存在数据库的
标记
表中。之后,在if语句中,您将把
post
附加到刚才保存的
标记上


希望有帮助

在将标签附加到帖子之前,请尝试保存标签

而不是:

...
if ($tag) {
    // Do your stuff
}
这样做:

...
if ($tag->save()) {
    // Do your stuff
}
这样,标记将保存在数据库的
标记
表中。之后,在if语句中,您将把
post
附加到刚才保存的
标记上


希望有帮助

我更新了if语句,但现在保存时出错。您的foreach不正确。你应该在你的foreach中使用
tag
而不是
tags
;foreach($request->tags as$tags){$tag=tag::create(['tag'=>$tags]);if($tag->save()){$post->tags()->attach($tag->id);}}}}
,这样你的foreach就更有意义了!以后只需确保使用foreach中为项目设置的值,而不是项目本身。我更新了if语句,但现在保存时出错。foreach不正确。你应该在你的foreach中使用
tag
而不是
tags
;foreach($request->tags as$tags){$tag=tag::create(['tag'=>$tags]);if($tag->save()){$post->tags()->attach($tag->id);}}}}
,这样你的foreach就更有意义了!将来,只需确保使用foreach中为项目设置的值,而不是项目本身。