首页 > 解决方案 > 使用关系数据 Laravel 保存到数据库

问题描述

我正在学习 Laravel 关系,遇到了一个我似乎无法解决的小问题。

基本上我有一个具有一对一关系的客户端和地址模型。创建新客户端时,我想捕获该客户端的地址,但它是可选的。

当创建一个新客户端并且不输入任何地址值时,显然会创建一个关系,但条目为空。

是否可以创建客户端,先检查客户端是否有地址,如果没有,不要创建关系?另外,更新方法也一样吗?

public function store(Request $request)
{

    // Create the client
    $client = Client::create($request->all());

    // Relate address   
    $address = new \App\Address($request->all());
    $client->address()->save($address);

    return redirect()
        ->route('clients.index');

}


public function update(Request $request, Client $client)
{

    // update the client
    $client->update($request->all());

    $address = [
        'address_1' => $request->address_1,
        'address_2' => $request->address_2,
        'address_3' => $request->address_3,
        'city' => $request->city,
        'postcode' => $request->postcode,
    ];

    // update the address
    $client->address()->updateOrCreate($address);

    return redirect()->route('clients.index');

}

此外,如果有任何关于更好的解决方法的建议,将不胜感激。

标签: laravel

解决方案


尝试这个 :

public function store(Request $request)
{    
     // check if the address is not empty
     
    if (!empty($request->get('address')){

    // Create the client
    $client = Client::create($request->all());

    // Relate address   
    $client->address()->create($request->get('address'));

    return redirect()
        ->route('clients.index');
    }else{
     return back()->withError('Empty address');
    }

}

推荐阅读