Я хочу, чтобы любимые кнопки для разных историй работали правильно - PullRequest
0 голосов
/ 28 декабря 2018

Я столкнулся с проблемой в проекте PHP Laravel.У меня есть любимая кнопка для историй.Разные пользователи будут иметь возможность сделать любимую историю, которая им понравилась.«Stories» и «Favorite_Story» имеют отдельные таблицы.Я извлек все истории из таблицы историй, а fav_story из таблицы "fav_story" на основе user_id.

Это код моего контроллера

public function fanfiction(){
    $user_id = session('userid');
    $data['stories'] = DB::Table('stories')->orderBy('story_id', 'des')->get();
    $data['fav_story'] = DB::Table('favorite_story')->where('user_id', $user_id)->get();
    return view('fanfiction', $data);
}

Это код моего просмотра

@foreach($stories as $row)
    <?php $story_id = $row->story_id; ?>
    <article class="post excerpt">
        <a href="{{ url('read_fanfic/'.$row->story_id) }}" id="featured-thumbnail">
            <div class="featured-thumbnail">
                @if($row->img == '')
                <img class="img-responsive" width="30%" src="{{ url('public/uploads/fanfic/no_img.png') }}" alt="Story Image" />
                @else
                <img class="img-responsive"  width="30%" src="{{ url('public/uploads/fanfic/'.$row->img) }}" alt="Story Image" />
                @endif
            </div>                      
        </a>
        <div class="post-content" style="text-align:justify;">
            {{ $row->story_desc }};
            <h3>{{ $row->story_title }}</h3>
        </div>

        <div class="readMore">
            @if(Session('username'))
                @foreach($fav_story as $row1)
                    @if($row1->story_id == $story_id)
                    <a href="{{ url('member/fav_story/'.$row->story_id) }}" style="background:#59AAE1;" > Unfavorite</a>
                    @elseif($story_id)
                        <a href="{{ url('member/fav_story/'.$row->story_id) }}" style="background:#1dbf73;" > Favorite</a>
                    @endif
                @endforeach
            @endif
        </div>
    </article>
@endforeach

В историях, отмеченных как избранные, будут отображаться кнопки с избранным.конкретная история, которая станет любимой, снова нажмите на эту кнопку.Проблема в том, что она показывает как любимую, так и ненужную кнопку с этой конкретной историей, а не кнопку для избранной, которая должна иметь эту кнопку, чтобы сделать ее любимой.

1 Ответ

0 голосов
/ 29 декабря 2018

Попробуйте это

Измените ваш запрос в вашем контроллере:

// this will store all story ids in an array
$data['fav_story'] = DB::table('favorite_story')->where('user_id', $user_id)->pluck('story_id');

Ваш блейд-вид

...
<div class="readMore">
    @if(Session('username'))
       @if(in_array($row->story_id, $fav_story))
           <a href="{{ url('member/fav_story/'.$row->story_id) }}" style="background:#59AAE1;" > Unfavorite</a>
       @else
           <a href="{{ url('member/fav_story/'.$row->story_id) }}" style="background:#1dbf73;" > Favorite</a>
       @endif
    @endif
</div>
...

РЕДАКТИРОВАТЬ

обновление $row->id до $row->story_id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...