Сводная таблица Laravel пуста в базе данных - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть простая форма для добавления информации о страницах, форма выглядит следующим образом:

enter image description here

, как вы можете видеть над вводом предварительной ставки, чтобы добавитьPrebids нам нужно нажать кнопку плюс и всплывающее окно появляется внутри всплывающего окна, у меня есть форма, которая содержит следующие входные данные

1.bidder_name                   
2.params_name                   
3.params_value                  

Так что теперь, когда пользователь сохраняет входные данные prebids из всплывающего окна, данные сохраняютсяк таблице с именем parameters, а затем пользователь нажимает кнопку add page, и данные сохраняются в таблице с именем pages,

. Я хотел бы связать добавленную страницу с добавленными параметрами (вводные данные с предварительными ставками)).

Вот что я пробовал до сих пор

Модель страницы

class Page extends Model
{
    protected $fillable =[
        "title",
        "articles",
        "status"
    ];
    public function parameter(){
        return $this->belongsToMany('App\Parameter');
    }
}

Параметр модели

 public function pages(){
        return $this->belongsToMany('App\Pages');
    }

Вот сводная таблица

public function up()
{
    Schema::create('page_parameter', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->bigInteger('page_id')->unsigned();
        $table->foreign('page_id')->references('id')->on('pages');
        $table->bigInteger('parameter_id')->unsigned();
        $table->foreign('parameter_id')->references('id')->on('parameters');
    });
}

Вот как это выглядит в phpmyadmin

enter image description here

Здесь хранится функция сохранения предварительных входных данных (параметров) внутри контроллера параметров

public function store(Request $request){
        // dd($request);

        if($request->ajax())
        {
            $rules = array(
                'params_name.*'  => 'required',
                'params_value.*'  => 'required',
                'bidders_name.*' => 'required'
            );
            $error = Validator::make($request->all(), $rules);
            if($error->fails())
            {
                return response()->json([
                    'error'  => $error->errors()->all()
                ]);
            }

            $params_name = $request->params_name;
            $params_value =$request->params_value;
            $bidders_name =$request->bidders_name;

            for($count = 0; $count < count($params_name); $count++)
            {
                $data = array(
                    'params_name'   => $params_name[$count],
                    'params_value'  => $params_value[$count],
                    'bidders_name'  => $bidders_name[$count],

                );

                $insert_data[] = $data; 
                // dd($insert_data);

            }

            Parameter::insert($insert_data);
            return response()->json([
                'success'  => 'Data Added successfully.'
            ]);
        }
    }

Теперь, когда пользователь сохраняет данные в базе данных, я вижу данные, сохраненные в pтаблица возрастов и таблица параметров, но сводная таблица пуста.

Я новичок в laravel,

Теперь, когда я сохраняю данные в базе данных, page_parameter table (сводная таблица)пусто;

Что я делаю не так с моими кодами?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019
// Tag model  many to many relation ship

namespace App;
use Illuminate\Database\Eloquent\Model;
class Tag extends Model
{
    public function posts()
    {
        return $this->belongsToMany('App\Post')->withTimestamps();
    }
}


// // Post model  many to many relation ship


namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
  public function tags()
    {
        return $this->belongsToMany('App\Tag')->withTimestamps();
    }
}

// Show tag with post
<td>{{$tag->posts->count() }}</td>

// show post with tag 

<td>{{$post->tags->name}}</td>
0 голосов
/ 06 ноября 2019

Первое, что вам нужно, чтобы создать элемент страницы:

$page=Page::create(your data);

, после этого

$page->parameter()->insert($insert_data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...