Как я могу вставить несколько писем в Laravel? - PullRequest
0 голосов
/ 03 октября 2018

Я хочу вставить несколько электронных писем пользователя в другую таблицу в Laravel.Возможно ли это?

Вот код:

use App\PersonData;

class PersonDataController extends Controller
{
    public function store(Request $request)
    {
        $user = new PersonData();

        return PersonData::store($request->person_data,$user);
    }
}

вот модель

 use App\CustomerEmail;
 use App\SupplierEmail;

 class PersonData extends Model
 {
     public function customeremails()
     {
         return $this->hasMany(CustomerEmail::class);
     }

     public function supplieremails()
     {
         return $this->hasMany(SupplierEmail::class);
     }

     public static function store($request,$user)
     {
         $user = fill($request);
         $user->save();

         return $user;

     }
}

вот 2-я модель, в которую нужно вставить несколько писем

class CustomerEmail extends Model
{
    protected $fillable = ['emails','person_data_id'];

    public function persondata()
    {
        return $this->belongsTo(PersonData::class);
    }
}

и окончательный код JSON

{
  "person_data": {
    "first_name": "Customer",
    "last_name": "customer_lastname",
    "company_name": "new industry",
    "gst_number": "no",
    "type": "customer",
    "customeremails": [
      {
        "person_data": 1,
        "email": "relation@gmail.com"
      }
    ],
    "address": "house 123, city:ludhiana",
    "phone_numbers": "8844845545",
    "website": "www.google.com"
  }
}

1 Ответ

0 голосов
/ 03 октября 2018

Как я понял твой вопрос.то, что вы ищете, это saveMany() функция для one-to-many отношений.

или, может быть, я неправильно понял ваш вопрос

// first gather all the emails to be saved after 'person data' is saved.
// because 'customer email' needs 'person data' id.
$customer_emails = collect();

foreach($request->person_data->customeremails as $email) {

    $cutomer_email = CustomerEmail::make([
        'email' => $email.email
    ]);

    $customer_emails->push($customer_email);
}

// save 'person data' first
$person_data = PersonData::create([
    // your person_data
]);

// this will automatically set 'person_data' foreign key on the 'customer email' table
// and save
$person_data->customeremails()->savemany($customer_emails);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...