(laravel 4)更新配置文件信息//显示空值还是表中已存储的值?

指挥官

事情就是这样,我正在使用Laravel 4,我有一个用户个人资料更新页面,供他们更新其个人资料。创建用户后,对其他表格(如地址,城市,国家/地区,性别)将一无所获。意思是,他仅出现在用户表中。现在,当他更新时,应该在这些表中为此用户创建他的个人资料条目。

这是我的问题,我试图在输入字段中显示存储在数据库中的值。仅当用户在每个表中都有一个条目时,它才可以正常工作,否则,因为$ address-> addressline1是一个非对象,否则就不能了。

这是显示更新页面的控制器代码:

    public function getProfileUpdate() {

        $user       = User::where('id', '=', Auth::user()->id);
        $countries  = Country::all();


        if ($user->count()) {
            $user       = $user->first();

            $address    = Address::where('id', '=', $user->address_id);

            if ($address->count()) {
                $address    = $address->first();
                $city       = City::where('id', '=', $address->city_id);

                if ($city->count()) {
                    $city           = $city->first();
                    $country        = Country::where('id', '=', $city->country_id);

                    if ($country->count()) {
                        $country        = $country->first();
                    }
                }
            } else {
                // WHAT SHOULD I DO?? tried many thing but they all return as non objects...
            }
            $gender         = Gender::where('id', '=', $user->gender_id);
            if ($gender->count()){
                $gender         = $gender->first();
            } else {
                $gender = [];
            }

            return  View::make('profile.update')
                    ->with('countries', $countries)
                    ->with('country', $country)
                    ->with('city', $city)
                    ->with('address', $address)
                    ->with('gender', $gender)
                    ->with('user', $user);            
        }
        return App::abort(404);
}

这是更新页面视图中的输入示例。

<div class="field">  
            <label for="addressline1">Address line 1</label>                
                <input class="form-control" type="text" name="addressline1" {{ (Input::old('addressline1')) ? ' value="' . e(Input::old('addressline1')) . '"' : ' value="' . e($address->addresline1) . '"' }}>
                @if ($errors->has('addressline1'))
                    <div class="alert alert-warning" role="alert">
                        {{ $errors->first('addressline1') }}
                    </div>
                @endif            
</div>

您将如何解决?我觉得有些事情做起来很简单,但我没有看到……!

Muharrem Tigdemir

首先,我建议您再次阅读Eloquent文档并了解模型之间的关系。

如果您的表之间存在一对一关系。您可以使用以下代码。

$address = new  Address; //Use in your else block

或者

$address= Auth::user()->address ? : new Address; //For this you have to define Relation

还有一点,

/*Don't use this*/
$gender         = Gender::where('id', '=', $user->gender_id);

/*Define Relation Between User and Gender Model this is better*/
 $gender = Auth::user()->gender;

最后,做您正在做的事情的最佳方法是使用“急切加载”。例如

Auth::user()->with('address.city.country' , 'gender')

此代码将在同一对象中加载User,Adress,City,Country。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在其他配置文件中获取配置文件值-Laravel 5

来自分类Dev

无法在中间表laravel中存储值

来自分类Dev

在Laravel4中串联配置值

来自分类Dev

Laravel:配置文件中“ :: class”的含义

来自分类Dev

laravel - foreach 中的空值

来自分类Dev

“更新”产生“从空值创建默认对象” Laravel-4

来自分类Dev

“更新”产生“从空值创建默认对象” Laravel-4

来自分类Dev

Laravel 缓存不存储空值

来自分类Dev

Laravel SSH到服务器未存储在配置文件中

来自分类Dev

如何在laravel 5.1中的用户表中更新值

来自分类Dev

如何在laravel 5.1中的用户表中更新值

来自分类Dev

在rtconner / laravel-tagging配置文件中更改显示选项

来自分类Dev

Laravel如何更新数据库表中的值?

来自分类Dev

更新Laravel 5中的其他数据透视表值

来自分类Dev

在Laravel 5中保存/更新用户配置文件

来自分类Dev

在Laravel 5.3中显示存储中的文件

来自分类Dev

在 Laravel 5.8 中创建可公开访问的用户配置文件表

来自分类Dev

是否有可能在laravel 4中的配置文件中编写html代码?

来自分类Dev

有什么办法可以在laravel 4 database.php配置文件中设置时区?

来自分类Dev

如何在laravel中永久更改配置文件

来自分类Dev

Laravel-如何从配置文件中获取命名路由?

来自分类Dev

Laravel:无法读取配置文件

来自分类Dev

Laravel多配置文件类型

来自分类Dev

Laravel:无法读取配置文件

来自分类Dev

(Laravel4)更新表中的行?

来自分类Dev

Laravel在TextArea中的值

来自分类Dev

Laravel 中的不同值

来自分类Dev

如何在Laravel中更新列值

来自分类Dev

如何在Laravel中更新列值