La creazione di un Eloquente Oggetto con relazione incluso

Sono abbastanza nuovo per opps e laravel sia
Così, per inserire i valori nel mio users e profiles tabella che hav OneToOne rapporto, Qui è come la mia store() metodo sembra

public function store(Requests\StoreNewUser $request)
{
    //crate an objct of user model
        $user = new \App\User;
        //now request and assign validated input to array of column names in user table
        $user->first_name = $request->input('first_name');
        $user->last_name = $request->input('last_name');
        $user->email = $request->input('email');
        $user->password = $request->input('password');
        /* want to assign request input to profile table's columns in one go 
        */
        $user->profile()->user_id = $user->id; //foreign key in profiles table
        $user->profile()->mobile_no = $request->input('mobile'); 
        dd($user); //nothing related to profile is returned
}

Sto creando il nuovo record, quindi dd() non restituisce tutto ciò che riguarda la tabella del profilo.

È questo, Perché il $user oggetto non è compresa la relazione di default?
Se sì posso creare il $user oggetto che include le relazioni in User Modello ?

O devo creare due oggetti separati di ogni tabella e save() i dati
Ma allora qual è il significato di push() metodo ?

MODIFICA 1
P. S. sì, i rapporti sono già definiti in User & Profile modello

OriginaleL’autore echoashu | 2015-06-11

3 Replies
  1. 10

    Si può provare qualcosa di simile al seguente. Prima di salvare il padre modello come questo:

    $user = new \App\User;
    $user->first_name = $request->input('first_name');
    //...
    
    $user->save();

    Quindi creare e salvare il modello in relazione con qualcosa di simile a questo:

    $profile = new \App\Profile(['mobile_no' => $request->input('mobile')]);
    $user->profile()->save($profile);

    Inoltre, assicurarsi di aver creato il profile metodo User modello:

    public function profile()
    {
        return $this->hasOne('App\Profile');
    }
    sì, il metodo esiste già con la relazione. Quindi, detto questo, devo creare due oggetti da User e Profile rispettivamente, ma che cosa esattamente $user->profile()->save($profile); significa? come diverso da $profile->save()
    Si attacca anche il profile con il User modello, in modo che non è necessario fornire il user.id(foreign key) durante la creazione del Profile manualmente.
    fatto. e che cosa abt salvare i dati in un colpo solo, cioè se più utenti sono stati creati da una molteplicità di singoli le richieste sul server, saranno eseguiti nel set? e non si mescolano? U può prendere in considerazione, devo creare un form utente e di qualche mio personale degli operatori stai inviando questo contemporaneamente.
    Sì, potrà essere salvato senza stridori.
    Sì, va bene IMO.

    OriginaleL’autore The Alpha

  2. 3

    Ho pensato di aggiornare questa risposta e renderlo applicabile a Laravel 5 in poi. Io uso @Alfa risposta come base.

    $profile = new \App\Profile(['mobile_no' => $request->input('mobile')]);
    $user->profile()->associate($profile); //You can no longer call 'save' here
    $user->profile()->save();

    La ragione di questo è che si può più chiamare save sul belongsTo relazione (o qualsiasi altro), questo ora restituisce un’istanza di Illuminate\Database\Query\Builder.

    OriginaleL’autore Matt

  3. 0

    È questo, Perché l’oggetto utente di $non è compresa la relazione di default? Se sì, che posso creare l’oggetto utente di $che include le relazioni nel Modello di Utente ?

    Sì, si dovrebbe creare la relazione, non sono inclusi da default.

    Nel User modello che si vuole fare qualcosa di simile a questo:

    public function profile()
    {
        return $this->hasOne('App\Profile'); //or whatever your namespace is
    }

    Questo sarebbe anche richiedere di avere un Profile modello creato.

    Questo sarebbe sicuramente rispondere alle vostre domande per quanto riguarda l’inserimento di modelli correlati: http://laravel.com/docs/5.1/eloquent-relationships#inserting-related-models

    Come L’Alfa accennato, e anche eluso, penso che è necessario salvare il vostro modello utente per primo, quindi è possibile aggiungere tramite rapporto.

    Che già c’è, ho dimenticato di citare, infatti, sia hasOne e belongsTo sono definiti in User e Profile modello rispettivamente

    OriginaleL’autore haakym

Lascia un commento