使用Laravel创建喜欢/不同的功能

时间:2014-10-12 18:30:27

标签: php laravel laravel-4

我有一个房地产应用程序的属性列表,我试图根据每个属性细节实现类似/不同的功能。我们的想法是添加一个like或删除它匹配当前属性和用户。到目前为止,这是我的代码,但它只删除了喜欢它,因此它没有按预期工作。如果有人可以建议更好的方法,我将不胜感激。

//控制器

public function storeLike($id)
{
    $like = Like::firstOrNew(array('property_id' => $id));
    $user = Auth::id();

    try{
        $liked = Like::get_like_user($id);
    }catch(Exception $ex){
        $liked = null;
    }

    if($liked){
        $liked->total_likes -= 1;
        $liked->status = false;
        $liked->save();
    }else{
        $like->user_id = $user;
        $like->total_likes += 1;
        $like->status = true;
        $like->save();
    }

    return Redirect::to('/detalle/propiedad/' . $id);
}

//型号

public static function get_like_user($id)
{
    return static::with('property', 'user')->where('property_id', $id)
                                           ->where('user_id', Auth::id())->first();
}

//路线

Route::get('store/like/{id}', array('as' => 'store.like', 'uses' => 'LikeController@storeLike'));

2 个答案:

答案 0 :(得分:0)

@AndrésDaViá看起来你正在从模特身上回归物体。如果数据库中没有数据,它仍然会返回一个对象 - 到目前为止我的猜测。您可以在if($liked){代码中执行以下操作吗?

请改为尝试:

if(isset($liked -> user_id)){

尝试在try和catch块之后尝试打印 $ likes 变量。使用var_dump。 如果这仍然不适合你,请告诉我。我将尝试根据您的问题创建代码。

答案 1 :(得分:0)

通过在我的模型中添加where子句来使其状态等于True - > where('status',1) - > first();