Laravel 4-雄辩的一对多横幅点击
我看不出我的代码哪里出错了。我相信我已经正确设置了关系/模型,但我的bannerclicks表不会插入行,更糟糕的是,它似乎破坏了横幅重定向 迁移Laravel 4-雄辩的一对多横幅点击,laravel,eloquent,Laravel,Eloquent,我看不出我的代码哪里出错了。我相信我已经正确设置了关系/模型,但我的bannerclicks表不会插入行,更糟糕的是,它似乎破坏了横幅重定向 迁移 const TBL_BANNER_CLICKS = 'banner_clicks'; public function up() { // Create the clicks table Schema::create(self::TBL_BANNER_CLICKS, function($table){
const TBL_BANNER_CLICKS = 'banner_clicks';
public function up()
{
// Create the clicks table
Schema::create(self::TBL_BANNER_CLICKS, function($table){
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('banner_id')->unsigned();
$table->string('ip_address', 45);
$table->integer('clicks')->unsigned()->default(0);
$table->integer('created_at');
$table->foreign('banner_id')
->references('id')->on('banners')
->onUpdate('cascade')
->onDelete('cascade')
;
});
}
模型
Banner.php
public function bannerclicks()
{
return $this->hasMany('BannerClick');
}
BannerClick.php
protected $table = 'banner_clicks';
public function banner()
{
return $this->belongsTo('Banner');
}
BannerController.php
public function redirect($id)
{
try {
// Original (want to keep)
$banner = Banner::where('id', $id)
->where('active', 1)
->firstOrFail();
$banner->clicks++;
$banner->save();
// new banner_clicks table
$bannerclick = new BannerClick($id);
$bannerclick->banner_id = $id;
$bannerclick->clicks = 1;
$bannerclick->bannerclicks()->save($bannerclick);
return Redirect::to($banner->url);
} catch (Exception $ex) {
return Redirect::to('/');
}
}
HTML
我认为你应该用这样的方式来挽救你的关系:
public function redirect($id)
{
try {
// Original (want to keep)
$banner = Banner::where('id', $id)
->where('active', 1)
->firstOrFail();
$banner->clicks++;
$banner->save();
// new banner_clicks table
$bannerclick = new BannerClick(array('clicks' => 1));
$banner->bannerclicks()->save($bannerclick);
return Redirect::to($banner->url);
} catch (Exception $ex) {
return Redirect::to('/');
}
}
请看这里:
或者干脆这样做:
$banner = Banner::where('id', $id)
->where('active', 1)
->firstOrFail();
$banner->clicks++;
$banner->save();
// new banner_clicks table
$bannerclick = new BannerClick;
$bannerclick->clicks = 1;
$bannerclick->banner_id= $banner->id;
$bannerclick->save();
这就像我一直在尝试,整天都在做各种各样的事情。我尝试了你的代码,但和我的代码一样,它保持失败并重定向到/尝试打印$ex->getMessage而不是重定向,这应该有助于查看错误是什么。或者同时将代码放在一个try-catch块之外。它不会吐出任何东西,只是停留在应该调用控制器的URL上。这是my routes.php Route::get'external/{id}中的项,数组'uses'=>'BannerController@redirect';我想那是你的测试领域,所以我看不到它。它实际上只是弹出一个默认的错误页面。我在一个“继承”的网站上工作。
$banner = Banner::where('id', $id)
->where('active', 1)
->firstOrFail();
$banner->clicks++;
$banner->save();
// new banner_clicks table
$bannerclick = new BannerClick;
$bannerclick->clicks = 1;
$bannerclick->banner_id= $banner->id;
$bannerclick->save();