CHAVE ESTRANGEIRA

71 views
Skip to first unread message

Karen Ancina

unread,
Nov 1, 2023, 7:57:19 AM11/1/23
to Laravel Brasil
Olá, gostaria de saber se alguém pode me ajudar! Sou iniciante e travei em uma parte de desenvolvimento.
Versão: Laravel 9

É o seguinte: 
- Tenho uma tabela Usuários, Subconjuntos e Descritivo.
- Já consegui fazer o usuário cadastrar um Subconjuntos. Porém agora quero que ao cadastrar um subconjunto, ele automaticamente é encaminhado página de cadastro do Descritivo, que tem dois campos.
- Mas não consigo fazer a Chave Estrangeira da tabela Descritivo ('idSub') pegar o 'id' da tabela de Subconjuntos, como fiz entre usuário e subconjunto anteriormente.

Vou mandar meu código:

** Minha função store do SubconjuntosController **

public function store(Request $request)
    {
        $user = Auth::user();


        if ($user && Auth::check()) {
            $sub = new Subconjuntos();
            $sub->title = $request->title;
            $sub->content = $request->content;
            $sub->status = $request->status == 'on' ? 0 : 1;

            $sub->user_id = Auth::user()->id;   // chave estrangeira do subconjuntos pega o id do usuário.
        }
        $sub->save();
     
        return redirect()->route('descritivo.create');  //Aqui encaminha para um formulário de criar um Descritivo.  
    }


** Minha função store do DescritivoController **

public function store(Request $request, Descritivo $descritivo)
    {
        $user = Auth::user();
        if ($user && Auth::check()) {
            $descritivo = new Descritivo();
            $descritivo->teorista = $request->teorista,
            $descritivo->referencia = $request->referencia,
       
              gostaria de saber como faço aqui para pegar a chave estrangeira do Descritivo e  ele ser igual ao id do subconjunto. Que nem eu fiz com Usuário e Subconjunto.

        }
        $descritivo->save();
        return redirect()->route('sub.index');

    }

** Model de Descritivo **
class Descritivo extends Model
{
    use HasFactory;

     protected $fillable = [
        'idSub',
        'teorista',
        'referencia',
    ];

    public function subconjuntos()
    {
        return $this->belongsTo(Subconjuntos::class);
    }
}

** Model do Subconjuntos **

class Subconjuntos extends Model 
{
    use HasFactory;

    protected $fillable = [
        'user_id',
        'title',
        'content',
        'status',
    ];

    protected $casts = [
    'status' => 'boolean' 
    ];

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function descritivo()
    {
        return $this->hasOne(Descritivo::class, 'idSub');

    }
}


***Meu sistema funciona da seguinte maneira:
- Usuário cadastra Subconjunto, ao clicar em Salvar, ele é encaminhada ao formulário de Descritivo.

Espero que alguém possa me ajudar. Porque sei que parece um bobagem de erro, porém eu travei tem um dia nessa parte e não consigo resolver. Serei muito grata! :)

Etevaldo Jales

unread,
Nov 1, 2023, 8:06:17 AM11/1/23
to laravel...@googlegroups.com
Bom dia!!
$id_descritivo = $descritivo->save();

Assim retorna o id do registro cadastrado 

--
Você recebeu essa mensagem porque está inscrito no grupo "Laravel Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para laravel-brasi...@googlegroups.com.
Para acessar essa discussão na Web, acesse https://groups.google.com/d/msgid/laravel-brasil/5a1c553a-e251-4b98-8965-babb65abe765n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages