如何为没有子条目的父条目构建Laravel eloquent查询?

时间:2016-10-03 21:34:20

标签: laravel eloquent

我无法相信我从来没有这样做过,现在我意识到我实际上并不知道如何实现它。基本结构为Parent hasMany Child)。我想定期查询没有Parent条目的所有Child条目并将其删除。

我认为这会从Parent::with('child')->where...->delete()开始。但是我该如何完成呢?我是否需要使用DB::raw代替?

如果您想进一步帮助我......我在Parent模型isExpired()中有一个功能。我真的只想删除isExpired()TRUE的条目。

1 个答案:

答案 0 :(得分:3)

您正在寻找doesntHave。这将为所有未参加儿童入学的家长提供帮助。并删除它们。

public function child()
{
   return $this->hasMany('App\Child');
}

父模型中的关系:

@Override
    public void onBindViewHolder(final MyAdapter.ViewHolder viewHolder, int position) {

        viewHolder.view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Item item = items.get(viewHolder.position);
                if(item.isSelect()){
                    item.setSelect(false);
                } else {
                    item.setSelect(true);
                }
                items.set(viewHolder.position, item);
                if(changeStatusListener != null){
                    changeStatusListener.onItemChangeListener(viewHolder.position, item);

                }
                notifyItemChanged(viewHolder.position);
            }
        });


        try {
            Item item= items.get(position);
            if(item!= null){
                viewHolder.name.setText(category.getItem());
                viewHolder.imageView.setImageResource(category.getImage());
                viewHolder.position = position;

                if(item.isSelect()) {
                    viewHolder.view.setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorPrimary));
                }
                else viewHolder.view.setBackgroundResource(R.drawable.item_selector);
            }
        } catch (Exception e){
            e.printStackTrace();
        }
    }