blastme
blastme

Reputation: 429

Saving data into database using create function laravel

I am having trouble saving this into database. When I submit my data into database it will only show name_of_bear and all the many relationship stuff(type_of_fish) but not the type_of_bear

Can someone explain to me why it can't work and also maybe give me an example on how it should be done. Thank you

Controller: (this works)

public function submit(Request $request)
{
    $fishType= $request->input('type_of_fish');
    $Name = $request->input('Name');
    $bearType = $request->input('bearType');

    $bear = Bear::create(['Name' => $request->input('name_of_bear')]);
    $bear->fishs()->create(['type_of_fish' => json_encode($fishType)]);

    return ('thank you');

}

But if I were to do this:

Controller : (doesn't work)

public function submit(Request $request)
{
    $fishType= $request->input('type_of_fish');
    $Name = $request->input('Name');
    $bearType = $request->input('bearType');

    $bear = Bear::create(['Name' => $Name]);
    $bear = Bear::create(['bearType' => $bearType]); --> doesn't  work if add in this
    $bear->fishs()->create(['type_of_fish' => json_encode($fishType)]);

    return ('thank you');

}

or this:

Controller: (doesn't work)

public function submit(Request $request)
{
    $fishType= $request->input('type_of_fish');
    $Name = $request->input('Name');
    $bearType = $request->input('bearType');

    $bear = Bear::create(['Name' => $Name], ['bearType' => $bearType]); --> doesn't work
    $bear->fishs()->create(['type_of_fish' => json_encode($fishType)]);

    return ('thank you');

}

Upvotes: 2

Views: 3933

Answers (4)

Raza Mehdi
Raza Mehdi

Reputation: 941

I would do it like this, assuming that post array keys matches column names.

$bear = Bear::create($request->all()->except(['_token', 'type_of_fish']));    

Upvotes: 1

Sunny Doshi
Sunny Doshi

Reputation: 373

You can insert data like this:

public function submit(Request $request)
{
    $data = array();
    $data['type_of_fish']= $request->type_of_fish;
    $data['Name'] = $request->Name;
    $data['bearType'] = $request->bearType;

    $bear = Bear::create($data);

    return ('thank you');

}

For more information read Documentation

Upvotes: 1

Blues Clues
Blues Clues

Reputation: 1838

You can just use:

$bear = Bear::create(['Name' => $Name, 'bearType' => $bearType]);

For more info, visit this link.

Upvotes: 1

Jigar Shah
Jigar Shah

Reputation: 6223

You can add it like this

$bear = Bear::create(['Name' => $Name , 'bearType' => $bearType]);

full code:

public function submit(Request $request)
{
    $fishType= $request->input('type_of_fish');
    $Name = $request->input('Name');
    $bearType = $request->input('bearType');

    $bear = Bear::create(['Name' => $Name , 'bearType' => $bearType]);
    return ('thank you');
} // removed extra }

For further information you can read documentation

Upvotes: 1

Related Questions