2017-12-07 20 views
0

DBにtitle用のuncial slugを生成して保存しようとしています。存在するかどうか確認して作成する

   $feed->friendlyUrl()->make([ 
       'url' => str_slug($feed->name), 
       'action' => "feeds/{$feed->id}", 
       'complicated' => false, 
       'page_type_id' => PageType::TYPE_INDIVIDUAL_FEED_PAGE, 
      ]); 

URLのフィールドが存在するかどうかを確認しますか?保存が存在する場合と:

'url' => str_slug($feed->name,"-1"), 

私は思う:

if (FriendlyUrl::whereUrl(str_slug($feed->name))){ 
      $feed->friendlyUrl()->make([ 
       'url' => str_slug($feed->name), 
       'action' => "feeds/{$feed->id}", 
       'complicated' => false, 
       'page_type_id' => PageType::TYPE_INDIVIDUAL_FEED_PAGE, 
      ]);} else { 
       $feed->friendlyUrl()->make([ 
        'url' => str_slug($feed->name), 
        'action' => "feeds/{$feed->id}-1", 
        'complicated' => false, 
        'page_type_id' => PageType::TYPE_INDIVIDUAL_FEED_PAGE, 
      }; 
      break; 

しかし、それきれいではないと何等かのURL - str_slug($feed->name,"-1")すでに存在していますか?

+0

のためのユニークなスラグ確認してくださいを/stackoverflow.com/questions/18839941/insert-a-new-record-if-not-exist-and-update-if-exist-laravel-eloquent –

答えて

0

これを試してみてください -

$FriendlyUrl = FriendlyUrl::firstOrNew(array('url' => str_slug($feed->name))); 
$FriendlyUrl->action = "feeds/{$feed->id}"; 
$FriendlyUrl->complicated = false; 
$FriendlyUrl->page_type_id = PageType::TYPE_INDIVIDUAL_FEED_PAGE; 
$FriendlyUrl->save(); 

リファレンス - Insert a new record if not exist and update if exist, laravel eloquent

+0

私はそのような私の答えに、ユニークな作成が必要です。 – tarurexod

+0

よろしくお願いいたします。 –

1

あなたは、この使用することができます: - :/ HTTPS

$friendlyUrl = friendlyUrl::firstOrNew(
    ['url' => str_slug($feed->name,"-1")], [ 
       'action' => "feeds/{$feed->id}", 
       'complicated' => false, 
       'page_type_id' => PageType::TYPE_INDIVIDUAL_FEED_PAGE,] 
); 

$friendlyUrl->save(); 
+0

URLは一意である必要がありますが、 '$ feed-> name、" - 1 ")' – tarurexod

0

タイトル

public static function boot() 
      { 
       parent::boot(); 

      static::creating(function($model) { 
       $model->slug = str_slug($model->ToBeSluggified);// change the ToBeSluggiefied 

       $latestSlug = 
        static::whereRaw("slug = '$model->slug' or slug LIKE '$model->slug-%'") 
         ->latest('id') 
         ->value('slug'); 
       if ($latestSlug) { 
        $pieces = explode('-', $latestSlug); 

        $number = intval(end($pieces)); 

        $model->slug .= '-' . ($number + 1); 
       } 
      }); 
     } 
関連する問題