Как получить данные из другой таблицы?так что я могу сделать условие и установить отношения (Laravel + Vue) - PullRequest
0 голосов
/ 27 ноября 2018

Пожалуйста, помогите мне в разработке веб-сайта?
Я хочу получить данные из таблицы циклов, чтобы я мог выполнить условие if и установить связь с таблицей морали.

Циклы Таблица содержит следующие данные:

$table->increments('id');
$table->date('date_start_raise');
$table->integer('population');
$table->integer('raising_days');
$table->date('date_end_raise');
$table->date('date_manure_collection');
$table->date('date_cleaning');
$table->date('date_disinfection');
$table->date('date_rest_day');
$table->date('date_preparation');
$table->unsignedInteger('user_id');
$table->timestamps();

Мне нужны следующие данные: date_start_raise , date_end_raise и id

Таблица смертности содержит следующие данные:

$table->increments('id');
$table->date('date_input');
$table->integer('number_of_mortality');
$table->integer('chicken_age');
$table->mediumText('cause_of_death')->nullable();
$table->unsignedInteger('cycle_id');
$table->unsignedInteger('user_id'); 
$table->timestamps();

Мне нужно передать id (цикл) в cycle_id (смертности).

Перед этим мне нужно сделать условие, чтобы содержание смертностей было соответствующим образом упорядочено по cycle_id, и это установит связь с таблицей циклов

Данные будут использоваться date_input (смертность), date_start_raise и date_end_raise (цикл).to date_end_raise , идентификатор будет передан cycle_id .


Например

В таблице циклов есть две данные enter image description here

(3 - 28 сентября): id = 1
(1 октября - 5 ноября): id = 2

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

enter image description here

В соответствии с модальностью смертности дата ( date_input ) - 6 сентября. id будет считаться как 1, потому что date_input принадлежит диапазону дат ( от date_start_raise до date_end_raise ) 3 сентября - 28 сентября, а для данных цикла id равно 1. После выборки значение id будетперейти к cycle_id (смертность), чтобы две таблицы имели взаимосвязь.


Я пробовал этот код, но это была ошибка

"message": "Вызов неопределенного метода App \ Cycle :: date_start_raise ()",

MortalityController.php (store)

public function store(Request $request)
{
   $cycle_id = Mortality::whereDate([
     ['date_input','>=', Cycle::date_start_raise()],
     ['date_input','<=', Cycle::date_end_raise()],
   ])->get(Cycle::id());

   $this->validate($request, array(
     'date_input' => 'required|date',
     'number_of_mortality' => 'required|numeric',
     'chicken_age' => 'required|numeric'
   ));

   return Mortality::create([
    'date_input' => request('date_input'),
    'number_of_mortality' => request('number_of_mortality'),
    'chicken_age' => request('chicken_age'),
    'cause_of_death' => request('cause_of_death'),
    'cycle_id' => $cycle_id,
    'user_id' => Auth::id()
  ]);
}

Пожалуйста, помогите мне.Заранее спасибо:)

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018
  public function store(Request $request)
        {
         $cycle = Mortality::whereDate([
         [request('date_input'),'>=', Cycle::date_start_raise()],
         [request('date_input'),'<=', Cycle::date_end_raise()],
         ])->get()->first();

         if ($cycle!==NULL)
           { $cycle_id = $cycle->id;}
         else return;//you may send with an error message like invalid date
         //above lines are a little bit changed.

         $this->validate($request, array(
           'date_input' => 'required|date',
           'number_of_mortality' => 'required|numeric',
           'chicken_age' => 'required|numeric'
           ));

         return Mortality::create([
           'date_input' => request('date_input'),
           'number_of_mortality' => request('number_of_mortality'),
           'chicken_age' => request('chicken_age'),
           'cause_of_death' => request('cause_of_death'),
           'cycle_id' => $cycle_id,
           'user_id' => Auth::id()
           ]);
       }

Когда вы использовали метод get с предложением where, вы получали коллекцию;ни одного экземпляра.Вот почему вы не можете назначить идентификатор.Используя first (), мы получаем один идентификатор.

0 голосов
/ 27 ноября 2018

Вы вызываете data_start_raise (), фактически не сообщая ему, для какой записи делать это на

['date_input','>=', Cycle::date_start_raise()],
 ['date_input','<=', Cycle::date_end_raise()

Вам необходимо найти запись, например,

Cycle::find( id goes here )->date_start_raise()

https://laravel.com/docs/5.7/eloquent

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...